Documentation
¶
Index ¶
- func BytesTrackIDForParticipantID(typ BytesTrackType, participantID livekit.ParticipantID) livekit.TrackID
- type AnalyticsService
- type BytesTrackStats
- type BytesTrackType
- type Conn
- type Listener
- type PacketConn
- type RelayAddressGenerator
- type StatsKey
- type StatsWorker
- func (s *StatsWorker) Close()
- func (s *StatsWorker) ClosedAt() time.Time
- func (s *StatsWorker) Flush()
- 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
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BytesTrackIDForParticipantID ¶ added in v1.3.2
func BytesTrackIDForParticipantID(typ BytesTrackType, participantID livekit.ParticipantID) livekit.TrackID
Types ¶
type AnalyticsService ¶ added in v0.15.0
type AnalyticsService interface {
SendStats(ctx context.Context, stats []*livekit.AnalyticsStat)
SendEvent(ctx context.Context, events *livekit.AnalyticsEvent)
}
func NewAnalyticsService ¶ added in v0.15.0
func NewAnalyticsService(_ *config.Config, currentNode routing.LocalNode) AnalyticsService
type BytesTrackStats ¶ added in v1.3.2
type BytesTrackStats struct {
// contains filtered or unexported fields
}
stats for signal and data channel
func NewBytesTrackStats ¶ added in v1.3.2
func NewBytesTrackStats(trackID livekit.TrackID, pID livekit.ParticipantID, telemetry TelemetryService) *BytesTrackStats
func (*BytesTrackStats) AddBytes ¶ added in v1.3.2
func (s *BytesTrackStats) AddBytes(bytes uint64, isSend bool)
func (*BytesTrackStats) Report ¶ added in v1.3.2
func (s *BytesTrackStats) Report()
type BytesTrackType ¶ added in v1.3.2
type BytesTrackType string
const ( BytesTrackTypeData BytesTrackType = "DT" BytesTrackTypeSignal BytesTrackType = "SG" )
type Listener ¶ added in v1.2.1
func NewListener ¶ added in v1.2.1
type PacketConn ¶ added in v1.2.1
type PacketConn struct {
net.PacketConn
// contains filtered or unexported fields
}
func NewPacketConn ¶ added in v1.2.1
func NewPacketConn(c net.PacketConn, direction prometheus.Direction) *PacketConn
func (*PacketConn) Close ¶ added in v1.2.1
func (c *PacketConn) Close() error
type RelayAddressGenerator ¶ added in v1.2.1
type RelayAddressGenerator struct {
turn.RelayAddressGenerator
}
func NewRelayAddressGenerator ¶ added in v1.2.1
func NewRelayAddressGenerator(g turn.RelayAddressGenerator) *RelayAddressGenerator
func (*RelayAddressGenerator) AllocateConn ¶ added in v1.2.1
func (*RelayAddressGenerator) AllocatePacketConn ¶ added in v1.2.1
func (g *RelayAddressGenerator) AllocatePacketConn(network string, requestedPort int) (net.PacketConn, net.Addr, error)
type StatsKey ¶ added in v1.3.4
type StatsKey struct {
// contains filtered or unexported fields
}
func StatsKeyForData ¶ added in v1.3.4
func StatsKeyForData(streamType livekit.StreamType, participantID livekit.ParticipantID, trackID livekit.TrackID) StatsKey
func StatsKeyForTrack ¶ added in v1.3.4
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()
func (*StatsWorker) ClosedAt ¶ added in v1.2.0
func (s *StatsWorker) ClosedAt() time.Time
func (*StatsWorker) Flush ¶ added in v1.2.2
func (s *StatsWorker) Flush()
func (*StatsWorker) IsConnected ¶ added in v1.3.3
func (s *StatsWorker) IsConnected() bool
func (*StatsWorker) OnTrackStat ¶ added in v0.15.3
func (s *StatsWorker) OnTrackStat(trackID livekit.TrackID, direction livekit.StreamType, stat *livekit.AnalyticsStat)
func (*StatsWorker) ParticipantID ¶ added in v1.2.0
func (s *StatsWorker) ParticipantID() livekit.ParticipantID
func (*StatsWorker) SetConnected ¶ added in v1.3.3
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)
// 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.