Skip to content

Commit f60f1ff

Browse files
authored
Introduced OnParticipantDisconnectedWithReason (#804)
* introduced OnParticipantDisconnectedWithReason * introduced OnParticipantDisconnectedWithReason
1 parent 4e47856 commit f60f1ff

File tree

2 files changed

+32
-26
lines changed

2 files changed

+32
-26
lines changed

callback.go

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -161,17 +161,18 @@ func GetDisconnectionReason(reason livekit.DisconnectReason) DisconnectionReason
161161
}
162162

163163
type RoomCallback struct {
164-
OnDisconnected func()
165-
OnDisconnectedWithReason func(reason DisconnectionReason)
166-
OnParticipantConnected func(*RemoteParticipant)
167-
OnParticipantDisconnected func(*RemoteParticipant)
168-
OnActiveSpeakersChanged func([]Participant)
169-
OnRoomMetadataChanged func(metadata string)
170-
OnRecordingStatusChanged func(isRecording bool)
171-
OnRoomMoved func(roomName string, token string)
172-
OnReconnecting func()
173-
OnReconnected func()
174-
OnLocalTrackSubscribed func(publication *LocalTrackPublication, lp *LocalParticipant)
164+
OnDisconnected func()
165+
OnDisconnectedWithReason func(reason DisconnectionReason)
166+
OnParticipantConnected func(*RemoteParticipant)
167+
OnParticipantDisconnected func(*RemoteParticipant)
168+
OnParticipantDisconnectedWithReason func(*RemoteParticipant, livekit.DisconnectReason)
169+
OnActiveSpeakersChanged func([]Participant)
170+
OnRoomMetadataChanged func(metadata string)
171+
OnRecordingStatusChanged func(isRecording bool)
172+
OnRoomMoved func(roomName string, token string)
173+
OnReconnecting func()
174+
OnReconnected func()
175+
OnLocalTrackSubscribed func(publication *LocalTrackPublication, lp *LocalParticipant)
175176

176177
// participant events are sent to the room as well
177178
ParticipantCallback
@@ -183,17 +184,18 @@ func NewRoomCallback() *RoomCallback {
183184
return &RoomCallback{
184185
ParticipantCallback: *pc,
185186

186-
OnDisconnected: func() {},
187-
OnDisconnectedWithReason: func(reason DisconnectionReason) {},
188-
OnParticipantConnected: func(participant *RemoteParticipant) {},
189-
OnParticipantDisconnected: func(participant *RemoteParticipant) {},
190-
OnActiveSpeakersChanged: func(participants []Participant) {},
191-
OnRoomMetadataChanged: func(metadata string) {},
192-
OnRecordingStatusChanged: func(isRecording bool) {},
193-
OnRoomMoved: func(roomName string, token string) {},
194-
OnReconnecting: func() {},
195-
OnReconnected: func() {},
196-
OnLocalTrackSubscribed: func(publication *LocalTrackPublication, lp *LocalParticipant) {},
187+
OnDisconnected: func() {},
188+
OnDisconnectedWithReason: func(reason DisconnectionReason) {},
189+
OnParticipantConnected: func(participant *RemoteParticipant) {},
190+
OnParticipantDisconnected: func(participant *RemoteParticipant) {},
191+
OnParticipantDisconnectedWithReason: func(participant *RemoteParticipant, reason livekit.DisconnectReason) {},
192+
OnActiveSpeakersChanged: func(participants []Participant) {},
193+
OnRoomMetadataChanged: func(metadata string) {},
194+
OnRecordingStatusChanged: func(isRecording bool) {},
195+
OnRoomMoved: func(roomName string, token string) {},
196+
OnReconnecting: func() {},
197+
OnReconnected: func() {},
198+
OnLocalTrackSubscribed: func(publication *LocalTrackPublication, lp *LocalParticipant) {},
197199
}
198200
}
199201

@@ -215,6 +217,9 @@ func (cb *RoomCallback) Merge(other *RoomCallback) {
215217
if other.OnParticipantDisconnected != nil {
216218
cb.OnParticipantDisconnected = other.OnParticipantDisconnected
217219
}
220+
if other.OnParticipantDisconnectedWithReason != nil {
221+
cb.OnParticipantDisconnectedWithReason = other.OnParticipantDisconnectedWithReason
222+
}
218223
if other.OnActiveSpeakersChanged != nil {
219224
cb.OnActiveSpeakersChanged = other.OnActiveSpeakersChanged
220225
}

room.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -809,7 +809,7 @@ func (r *Room) OnRestarting() {
809809
r.callback.OnReconnecting()
810810

811811
for _, rp := range r.GetRemoteParticipants() {
812-
r.OnParticipantDisconnect(rp)
812+
r.OnParticipantDisconnect(rp, livekit.DisconnectReason_UNKNOWN_REASON)
813813
}
814814
}
815815

@@ -878,7 +878,7 @@ func (r *Room) OnParticipantUpdate(participants []*livekit.ParticipantInfo) {
878878
isNew := rp == nil
879879

880880
if pi.State == livekit.ParticipantInfo_DISCONNECTED {
881-
r.OnParticipantDisconnect(rp)
881+
r.OnParticipantDisconnect(rp, pi.GetDisconnectReason())
882882
} else if isNew {
883883
rp = r.addRemoteParticipant(pi, true)
884884
r.clearParticipantDefers(livekit.ParticipantID(pi.Sid), pi)
@@ -907,7 +907,7 @@ func (r *Room) OnParticipantUpdate(participants []*livekit.ParticipantInfo) {
907907
}
908908
}
909909

910-
func (r *Room) OnParticipantDisconnect(rp *RemoteParticipant) {
910+
func (r *Room) OnParticipantDisconnect(rp *RemoteParticipant, reason livekit.DisconnectReason) {
911911
if rp == nil {
912912
return
913913
}
@@ -921,6 +921,7 @@ func (r *Room) OnParticipantDisconnect(rp *RemoteParticipant) {
921921
rp.unpublishAllTracks()
922922
r.LocalParticipant.handleParticipantDisconnected(rp.Identity())
923923
go r.callback.OnParticipantDisconnected(rp)
924+
go r.callback.OnParticipantDisconnectedWithReason(rp, reason)
924925
}
925926

926927
func (r *Room) OnSpeakersChanged(speakerUpdates []*livekit.SpeakerInfo) {
@@ -1002,7 +1003,7 @@ func (r *Room) OnRoomMoved(moved *livekit.RoomMovedResponse) {
10021003
r.OnRoomUpdate(moved.Room)
10031004

10041005
for _, rp := range r.GetRemoteParticipants() {
1005-
r.OnParticipantDisconnect(rp)
1006+
r.OnParticipantDisconnect(rp, livekit.DisconnectReason_ROOM_CLOSED)
10061007
}
10071008

10081009
go r.callback.OnRoomMoved(moved.Room.Name, moved.Token)

0 commit comments

Comments
 (0)