async fn read(&self, b: &mut [u8]) -> Result<(usize, Attributes)> {
        let mut send_called_rx = self.send_called_rx.lock().await;

        tokio::select! {
            _ = send_called_rx.recv() =>{
                let rtcp_interceptor = {
                    let rtcp_interceptor = self.rtcp_interceptor.lock().await;
                    rtcp_interceptor.clone()
                };
                if let Some(rtcp_interceptor) = rtcp_interceptor{
                    let a = Attributes::new();
                    tokio::select! {
                        _ = self.stop_called_rx.notified() => {
                            Err(Error::ErrClosedPipe)
                        }
                        result = rtcp_interceptor.read(b, &a) => {
                            Ok(result?)
                        }
                    }
                }else{
                    Err(Error::ErrInterceptorNotBind)
                }
            }
            _ = self.stop_called_rx.notified() =>{
                Err(Error::ErrClosedPipe)
            }
        }
    }
/// read reads incoming RTCP for this RTPReceiver
read reads incoming RTCP for this RTPReceiver
read reads incoming RTCP for this RTPReceiver
async fn read(&self, b: &mut [u8]) -> Result<(usize, Attributes)> {
        let mut send_called_rx = self.send_called_rx.lock().await;
        tokio::select! {
            _ = send_called_rx.recv() =>{
                let rtcp_interceptor = {
                    let rtcp_interceptor = self.rtcp_interceptor.lock().await;
                    rtcp_interceptor.clone()
                };
                if let Some(rtcp_interceptor) = rtcp_interceptor{
                    let a = Attributes::new();
                    tokio::select! {
                        _ = self.stop_called_rx.notified() => {
                            Err(Error::ErrClosedPipe)
                        }
                        result = rtcp_interceptor.read(b, &a) => {
                            Ok(result?)
                        }
                    }
                }else{
                    Err(Error::ErrInterceptorNotBind)
                }
            }
            _ = self.stop_called_rx.notified() =>{
                Err(Error::ErrClosedPipe)
            }
        }
    }
async fn read ( & self , b : & mut [ u8 ] ) -> Result < ( usize , Attributes ) > { let mut send_called_rx = self . send_called_rx . lock ( ) . await ; tokio :: select ! { send_called_rx recv ( ) { let rtcp_interceptor { let rtcp_interceptor self rtcp_interceptor lock ( ) await rtcp_interceptor clone ( ) } if let Some ( rtcp_interceptor ) rtcp_interceptor { let a Attributes new ( ) tokio select { self stop_called_rx notified ( ) { Err ( Error ErrClosedPipe ) } result rtcp_interceptor read ( b a ) { Ok ( result ) } } } else { Err ( Error ErrInterceptorNotBind ) } } self stop_called_rx notified ( ) { Err ( Error ErrClosedPipe ) } } }
read reads incoming RTCP for this RTPReceiver
read reads incoming RTCP for this RTPReceiver
&self
b
&mut [u8]