pub(super) async fn add_rtp_transceiver(&self, t: Arc<RTCRtpTransceiver>) {
        {
            let mut rtp_transceivers = self.rtp_transceivers.lock().await;
            rtp_transceivers.push(t);
        }
        RTCPeerConnection::do_negotiation_needed(NegotiationNeededParams {
            on_negotiation_needed_handler: Arc::clone(&self.on_negotiation_needed_handler),
            is_closed: Arc::clone(&self.is_closed),
            ops: Arc::clone(&self.ops),
            negotiation_needed_state: Arc::clone(&self.negotiation_needed_state),
            is_negotiation_needed: Arc::clone(&self.is_negotiation_needed),
            signaling_state: Arc::clone(&self.signaling_state),
            check_negotiation_needed_params: CheckNegotiationNeededParams {
                sctp_transport: Arc::clone(&self.sctp_transport),
                rtp_transceivers: Arc::clone(&self.rtp_transceivers),
                current_local_description: Arc::clone(&self.current_local_description),
                current_remote_description: Arc::clone(&self.current_remote_description),
            },
        })
        .await;
    }
/// add_rtp_transceiver appends t into rtp_transceivers
/// and fires onNegotiationNeeded;
/// caller of this method should hold `self.mu` lock
add_rtp_transceiver appends t into rtp_transceivers
and fires onNegotiationNeeded;
caller of this method should hold `self.mu` lock
add_rtp_transceiver appends t into rtp_transceivers and fires onNegotiationNeeded ; caller of this method should hold ` self . mu ` lock
pub(super) async fn add_rtp_transceiver(&self, t: Arc<RTCRtpTransceiver>) {
        {
            let mut rtp_transceivers = self.rtp_transceivers.lock().await;
            rtp_transceivers.push(t);
        }
        RTCPeerConnection::do_negotiation_needed(NegotiationNeededParams {
            on_negotiation_needed_handler: Arc::clone(&self.on_negotiation_needed_handler),
            is_closed: Arc::clone(&self.is_closed),
            ops: Arc::clone(&self.ops),
            negotiation_needed_state: Arc::clone(&self.negotiation_needed_state),
            is_negotiation_needed: Arc::clone(&self.is_negotiation_needed),
            signaling_state: Arc::clone(&self.signaling_state),
            check_negotiation_needed_params: CheckNegotiationNeededParams {
                sctp_transport: Arc::clone(&self.sctp_transport),
                rtp_transceivers: Arc::clone(&self.rtp_transceivers),
                current_local_description: Arc::clone(&self.current_local_description),
                current_remote_description: Arc::clone(&self.current_remote_description),
            },
        })
        .await;
    }
pub ( super ) async fn add_rtp_transceiver ( & self , t : Arc < RTCRtpTransceiver > ) { { let mut rtp_transceivers = self . rtp_transceivers . lock ( ) . await ; rtp_transceivers . push ( t ) ; } RTCPeerConnection :: do_negotiation_needed ( NegotiationNeededParams { on_negotiation_needed_handler : Arc :: clone ( & self . on_negotiation_needed_handler ) , is_closed : Arc :: clone ( & self . is_closed ) , ops : Arc :: clone ( & self . ops ) , negotiation_needed_state : Arc :: clone ( & self . negotiation_needed_state ) , is_negotiation_needed : Arc :: clone ( & self . is_negotiation_needed ) , signaling_state : Arc :: clone ( & self . signaling_state ) , check_negotiation_needed_params : CheckNegotiationNeededParams { sctp_transport : Arc :: clone ( & self . sctp_transport ) , rtp_transceivers : Arc :: clone ( & self . rtp_transceivers ) , current_local_description : Arc :: clone ( & self . current_local_description ) , current_remote_description : Arc :: clone ( & self . current_remote_description ) , } , } ) . await ; }
add_rtp_transceiver appends t into rtp_transceivers
and fires onNegotiationNeeded;
caller of this method should hold `self.mu` lock
add_rtp_transceiver appends t into rtp_transceivers and fires onNegotiationNeeded ; caller of this method should hold ` self . mu ` lock
&self
t
Arc<RTCRtpTransceiver>