MCPcopy
hub / github.com/livekit/livekit / AddSubscriber

Method AddSubscriber

pkg/rtc/datatrack.go:116–151  ·  view source on GitHub ↗
(sub types.LocalParticipant)

Source from the content-addressed store, hash-verified

114}
115
116func (d *DataTrack) AddSubscriber(sub types.LocalParticipant) (types.DataDownTrack, error) {
117 d.lock.Lock()
118 defer d.lock.Unlock()
119
120 if _, ok := d.subscribedTracks[sub.ID()]; ok {
121 return nil, errAlreadySubscribed
122 }
123
124 bytesStats := NewBytesTrackStats(
125 sub.GetCountry(),
126 d.ID(),
127 sub.ID(),
128 sub.Kind(),
129 sub.KindDetails(),
130 sub.GetTelemetryListener(),
131 sub.GetReporter(),
132 )
133 dataDownTrack, err := NewDataDownTrack(DataDownTrackParams{
134 Logger: sub.GetLogger().WithValues("trackID", d.ID()),
135 SubscriberID: sub.ID(),
136 PublishDataTrack: d,
137 Handle: sub.GetNextSubscribedDataTrackHandle(),
138 Transport: sub.GetDataTrackTransport(),
139 BytesTrackStats: bytesStats,
140 })
141 if err != nil {
142 bytesStats.Stop()
143 return nil, err
144 }
145
146 d.subscribedTracks[sub.ID()] = subscribedDataTrack{
147 subscriber: sub,
148 dataDownTrack: dataDownTrack,
149 }
150 return dataDownTrack, nil
151}
152
153func (d *DataTrack) RemoveSubscriber(subID livekit.ParticipantID) {
154 d.lock.Lock()

Calls 13

IDMethod · 0.95
StopMethod · 0.95
NewBytesTrackStatsFunction · 0.85
NewDataDownTrackFunction · 0.85
IDMethod · 0.65
GetCountryMethod · 0.65
KindMethod · 0.65
KindDetailsMethod · 0.65
GetTelemetryListenerMethod · 0.65
GetReporterMethod · 0.65
GetLoggerMethod · 0.65

Tested by 1