Documentation ¶
Index ¶
- func BytesTrackIDForParticipantID(typ BytesTrackType, participantID livekit.ParticipantID) livekit.TrackID
- type AnalyticsService
- type BytesSignalStats
- type BytesTrackStats
- type BytesTrackType
- type Conn
- type Listener
- type PacketConn
- type RelayAddressGenerator
- type StatsKey
- type StatsWorker
- func (s *StatsWorker) Close() bool
- func (s *StatsWorker) Closed() bool
- func (s *StatsWorker) Flush(now time.Time) bool
- func (s *StatsWorker) IsConnected() bool
- func (s *StatsWorker) OnTrackStat(trackID livekit.TrackID, direction livekit.StreamType, ...)
- func (s *StatsWorker) ParticipantID() livekit.ParticipantID
- func (s *StatsWorker) SetConnected()
- type TelemetryService
- type TrafficTotals
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BytesTrackIDForParticipantID ¶
func BytesTrackIDForParticipantID(typ BytesTrackType, participantID livekit.ParticipantID) livekit.TrackID
Types ¶
type AnalyticsService ¶
type AnalyticsService interface { SendStats(ctx context.Context, stats []*livekit.AnalyticsStat) SendEvent(ctx context.Context, events *livekit.AnalyticsEvent) SendNodeRoomStates(ctx context.Context, nodeRooms *livekit.AnalyticsNodeRooms) }
func NewAnalyticsService ¶
func NewAnalyticsService(_ *config.Config, currentNode routing.LocalNode) AnalyticsService
type BytesSignalStats ¶
type BytesSignalStats struct { BytesTrackStats // contains filtered or unexported fields }
func NewBytesSignalStats ¶
func NewBytesSignalStats(ctx context.Context, telemetry TelemetryService) *BytesSignalStats
func (*BytesSignalStats) ResolveParticipant ¶
func (s *BytesSignalStats) ResolveParticipant(pi *livekit.ParticipantInfo)
func (*BytesSignalStats) ResolveRoom ¶
func (s *BytesSignalStats) ResolveRoom(ri *livekit.Room)
type BytesTrackStats ¶
type BytesTrackStats struct {
// contains filtered or unexported fields
}
stats for signal and data channel
func NewBytesTrackStats ¶
func NewBytesTrackStats(trackID livekit.TrackID, pID livekit.ParticipantID, telemetry TelemetryService) *BytesTrackStats
func (*BytesTrackStats) AddBytes ¶
func (s *BytesTrackStats) AddBytes(bytes uint64, isSend bool)
func (*BytesTrackStats) GetTrafficTotals ¶
func (s *BytesTrackStats) GetTrafficTotals() *TrafficTotals
func (*BytesTrackStats) Stop ¶
func (s *BytesTrackStats) Stop()
type BytesTrackType ¶
type BytesTrackType string
const ( BytesTrackTypeData BytesTrackType = "DT" BytesTrackTypeSignal BytesTrackType = "SG" )
type Listener ¶
func NewListener ¶
type PacketConn ¶
type PacketConn struct { net.PacketConn // contains filtered or unexported fields }
func NewPacketConn ¶
func NewPacketConn(c net.PacketConn, direction prometheus.Direction) *PacketConn
func (*PacketConn) Close ¶
func (c *PacketConn) Close() error
type RelayAddressGenerator ¶
type RelayAddressGenerator struct {
turn.RelayAddressGenerator
}
func NewRelayAddressGenerator ¶
func NewRelayAddressGenerator(g turn.RelayAddressGenerator) *RelayAddressGenerator
func (*RelayAddressGenerator) AllocateConn ¶
func (*RelayAddressGenerator) AllocatePacketConn ¶
func (g *RelayAddressGenerator) AllocatePacketConn(network string, requestedPort int) (net.PacketConn, net.Addr, error)
type StatsKey ¶
type StatsKey struct {
// contains filtered or unexported fields
}
func StatsKeyForData ¶
func StatsKeyForData(streamType livekit.StreamType, participantID livekit.ParticipantID, trackID livekit.TrackID) StatsKey
func StatsKeyForTrack ¶
func StatsKeyForTrack(streamType livekit.StreamType, participantID livekit.ParticipantID, trackID livekit.TrackID, trackSource livekit.TrackSource, trackType livekit.TrackType) StatsKey
type StatsWorker ¶
type StatsWorker struct {
// contains filtered or unexported fields
}
StatsWorker handles participant stats
func (*StatsWorker) Close ¶
func (s *StatsWorker) Close() bool
func (*StatsWorker) Closed ¶
func (s *StatsWorker) Closed() bool
func (*StatsWorker) IsConnected ¶
func (s *StatsWorker) IsConnected() bool
func (*StatsWorker) OnTrackStat ¶
func (s *StatsWorker) OnTrackStat(trackID livekit.TrackID, direction livekit.StreamType, stat *livekit.AnalyticsStat)
func (*StatsWorker) ParticipantID ¶
func (s *StatsWorker) ParticipantID() livekit.ParticipantID
func (*StatsWorker) SetConnected ¶
func (s *StatsWorker) SetConnected()
type TelemetryService ¶
type TelemetryService interface { // TrackStats is called periodically for each track in both directions (published/subscribed) TrackStats(key StatsKey, stat *livekit.AnalyticsStat) // events RoomStarted(ctx context.Context, room *livekit.Room) RoomEnded(ctx context.Context, room *livekit.Room) // ParticipantJoined - a participant establishes signal connection to a room ParticipantJoined(ctx context.Context, room *livekit.Room, participant *livekit.ParticipantInfo, clientInfo *livekit.ClientInfo, clientMeta *livekit.AnalyticsClientMeta, shouldSendEvent bool) // ParticipantActive - a participant establishes media connection ParticipantActive(ctx context.Context, room *livekit.Room, participant *livekit.ParticipantInfo, clientMeta *livekit.AnalyticsClientMeta, isMigration bool) // ParticipantResumed - there has been an ICE restart or connection resume attempt, and we've received their signal connection ParticipantResumed(ctx context.Context, room *livekit.Room, participant *livekit.ParticipantInfo, nodeID livekit.NodeID, reason livekit.ReconnectReason) // ParticipantLeft - the participant leaves the room, only sent if ParticipantActive has been called before ParticipantLeft(ctx context.Context, room *livekit.Room, participant *livekit.ParticipantInfo, shouldSendEvent bool) // TrackPublishRequested - a publication attempt has been received TrackPublishRequested(ctx context.Context, participantID livekit.ParticipantID, identity livekit.ParticipantIdentity, track *livekit.TrackInfo) // TrackPublished - a publication attempt has been successful TrackPublished(ctx context.Context, participantID livekit.ParticipantID, identity livekit.ParticipantIdentity, track *livekit.TrackInfo) // TrackUnpublished - a participant unpublished a track TrackUnpublished(ctx context.Context, participantID livekit.ParticipantID, identity livekit.ParticipantIdentity, track *livekit.TrackInfo, shouldSendEvent bool) // TrackSubscribeRequested - a participant requested to subscribe to a track TrackSubscribeRequested(ctx context.Context, participantID livekit.ParticipantID, track *livekit.TrackInfo) // TrackSubscribed - a participant subscribed to a track successfully TrackSubscribed(ctx context.Context, participantID livekit.ParticipantID, track *livekit.TrackInfo, publisher *livekit.ParticipantInfo, shouldSendEvent bool) // TrackUnsubscribed - a participant unsubscribed from a track successfully TrackUnsubscribed(ctx context.Context, participantID livekit.ParticipantID, track *livekit.TrackInfo, shouldSendEvent bool) // TrackSubscribeFailed - failure to subscribe to a track TrackSubscribeFailed(ctx context.Context, participantID livekit.ParticipantID, trackID livekit.TrackID, err error, isUserError bool) // TrackMuted - the publisher has muted the Track TrackMuted(ctx context.Context, participantID livekit.ParticipantID, track *livekit.TrackInfo) // TrackUnmuted - the publisher has muted the Track TrackUnmuted(ctx context.Context, participantID livekit.ParticipantID, track *livekit.TrackInfo) // TrackPublishedUpdate - track metadata has been updated TrackPublishedUpdate(ctx context.Context, participantID livekit.ParticipantID, track *livekit.TrackInfo) // TrackMaxSubscribedVideoQuality - publisher is notified of the max quality subscribers desire TrackMaxSubscribedVideoQuality(ctx context.Context, participantID livekit.ParticipantID, track *livekit.TrackInfo, mime string, maxQuality livekit.VideoQuality) TrackPublishRTPStats(ctx context.Context, participantID livekit.ParticipantID, trackID livekit.TrackID, mimeType string, layer int, stats *livekit.RTPStats) TrackSubscribeRTPStats(ctx context.Context, participantID livekit.ParticipantID, trackID livekit.TrackID, mimeType string, stats *livekit.RTPStats) EgressStarted(ctx context.Context, info *livekit.EgressInfo) EgressUpdated(ctx context.Context, info *livekit.EgressInfo) EgressEnded(ctx context.Context, info *livekit.EgressInfo) IngressCreated(ctx context.Context, info *livekit.IngressInfo) IngressDeleted(ctx context.Context, info *livekit.IngressInfo) IngressStarted(ctx context.Context, info *livekit.IngressInfo) IngressUpdated(ctx context.Context, info *livekit.IngressInfo) IngressEnded(ctx context.Context, info *livekit.IngressInfo) LocalRoomState(ctx context.Context, info *livekit.AnalyticsNodeRooms) // helpers AnalyticsService NotifyEvent(ctx context.Context, event *livekit.WebhookEvent) FlushStats() }
func NewTelemetryService ¶
func NewTelemetryService(notifier webhook.QueuedNotifier, analytics AnalyticsService) TelemetryService
Source Files ¶
Click to show internal directories.
Click to hide internal directories.