@@ -133,23 +133,30 @@ impl Signaller {
133
133
) ;
134
134
}
135
135
p:: OutgoingMessage :: Registered ( _) => unreachable ! ( ) ,
136
- p:: OutgoingMessage :: StartSession { peer_id } => {
137
- if let Err ( err) = element. add_consumer ( & peer_id) {
136
+ p:: OutgoingMessage :: StartSession {
137
+ session_id,
138
+ peer_id,
139
+ } => {
140
+ if let Err ( err) =
141
+ element. add_consumer ( & session_id, & peer_id)
142
+ {
138
143
gst:: warning!( CAT , obj: & element, "{}" , err) ;
139
144
}
140
145
}
141
- p:: OutgoingMessage :: EndSession { peer_id } => {
142
- if let Err ( err) = element. remove_consumer ( & peer_id) {
146
+ p:: OutgoingMessage :: EndSession ( session_info) => {
147
+ if let Err ( err) =
148
+ element. remove_consumer ( & session_info. session_id )
149
+ {
143
150
gst:: warning!( CAT , obj: & element, "{}" , err) ;
144
151
}
145
152
}
146
153
p:: OutgoingMessage :: Peer ( p:: PeerMessage {
147
- peer_id ,
154
+ session_id ,
148
155
peer_message,
149
156
} ) => match peer_message {
150
157
p:: PeerMessageInner :: Sdp ( p:: SdpMessage :: Answer { sdp } ) => {
151
158
if let Err ( err) = element. handle_sdp (
152
- & peer_id ,
159
+ & session_id ,
153
160
& gst_webrtc:: WebRTCSessionDescription :: new (
154
161
gst_webrtc:: WebRTCSDPType :: Answer ,
155
162
gst_sdp:: SDPMessage :: parse_buffer (
@@ -175,7 +182,7 @@ impl Signaller {
175
182
sdp_m_line_index,
176
183
} => {
177
184
if let Err ( err) = element. handle_ice (
178
- & peer_id ,
185
+ & session_id ,
179
186
Some ( sdp_m_line_index) ,
180
187
None ,
181
188
& candidate,
@@ -254,13 +261,13 @@ impl Signaller {
254
261
pub fn handle_sdp (
255
262
& self ,
256
263
element : & WebRTCSink ,
257
- peer_id : & str ,
264
+ session_id : & str ,
258
265
sdp : & gst_webrtc:: WebRTCSessionDescription ,
259
266
) {
260
267
let state = self . state . lock ( ) . unwrap ( ) ;
261
268
262
269
let msg = p:: IncomingMessage :: Peer ( p:: PeerMessage {
263
- peer_id : peer_id . to_string ( ) ,
270
+ session_id : session_id . to_string ( ) ,
264
271
peer_message : p:: PeerMessageInner :: Sdp ( p:: SdpMessage :: Offer {
265
272
sdp : sdp. sdp ( ) . as_text ( ) . unwrap ( ) ,
266
273
} ) ,
@@ -281,15 +288,15 @@ impl Signaller {
281
288
pub fn handle_ice (
282
289
& self ,
283
290
element : & WebRTCSink ,
284
- peer_id : & str ,
291
+ session_id : & str ,
285
292
candidate : & str ,
286
293
sdp_m_line_index : Option < u32 > ,
287
294
_sdp_mid : Option < String > ,
288
295
) {
289
296
let state = self . state . lock ( ) . unwrap ( ) ;
290
297
291
298
let msg = p:: IncomingMessage :: Peer ( p:: PeerMessage {
292
- peer_id : peer_id . to_string ( ) ,
299
+ session_id : session_id . to_string ( ) ,
293
300
peer_message : p:: PeerMessageInner :: Ice {
294
301
candidate : candidate. to_string ( ) ,
295
302
sdp_m_line_index : sdp_m_line_index. unwrap ( ) ,
@@ -331,17 +338,17 @@ impl Signaller {
331
338
}
332
339
}
333
340
334
- pub fn consumer_removed ( & self , element : & WebRTCSink , peer_id : & str ) {
335
- gst:: debug!( CAT , obj: element, "Signalling consumer {} removed " , peer_id ) ;
341
+ pub fn end_session ( & self , element : & WebRTCSink , session_id : & str ) {
342
+ gst:: debug!( CAT , obj: element, "Signalling session {} ended " , session_id ) ;
336
343
337
344
let state = self . state . lock ( ) . unwrap ( ) ;
338
- let peer_id = peer_id . to_string ( ) ;
345
+ let session_id = session_id . to_string ( ) ;
339
346
let element = element. downgrade ( ) ;
340
347
if let Some ( mut sender) = state. websocket_sender . clone ( ) {
341
348
task:: spawn ( async move {
342
349
if let Err ( err) = sender
343
350
. send ( p:: IncomingMessage :: EndSession ( p:: EndSessionMessage {
344
- peer_id : peer_id . to_string ( ) ,
351
+ session_id : session_id . to_string ( ) ,
345
352
} ) )
346
353
. await
347
354
{
0 commit comments