use std::any::Any;
use std::net::SocketAddr;
use tokio::sync::broadcast;
use super::{RtpTransport, RtpTransportConfig};
use crate::error::Error;
use crate::traits::RtpEvent;
use crate::Result;
#[allow(dead_code)] pub struct TcpRtpTransport {
#[allow(dead_code)] config: RtpTransportConfig,
event_tx: broadcast::Sender<RtpEvent>,
}
impl TcpRtpTransport {
pub async fn new(_config: RtpTransportConfig) -> Result<Self> {
let (event_tx, _) = broadcast::channel(100);
Ok(Self {
config: _config,
event_tx,
})
}
}
#[async_trait::async_trait]
impl RtpTransport for TcpRtpTransport {
fn local_rtp_addr(&self) -> Result<SocketAddr> {
Err(Error::NotImplemented(
"TCP transport not yet implemented".to_string(),
))
}
fn local_rtcp_addr(&self) -> Result<Option<SocketAddr>> {
Err(Error::NotImplemented(
"TCP transport not yet implemented".to_string(),
))
}
async fn send_rtp(&self, _packet: &crate::packet::RtpPacket, _dest: SocketAddr) -> Result<()> {
Err(Error::NotImplemented(
"TCP transport not yet implemented".to_string(),
))
}
async fn send_rtp_bytes(&self, _bytes: &[u8], _dest: SocketAddr) -> Result<()> {
Err(Error::NotImplemented(
"TCP transport not yet implemented".to_string(),
))
}
async fn send_rtcp_bytes(&self, _data: &[u8], _dest: SocketAddr) -> Result<()> {
Err(Error::NotImplemented(
"TCP transport not yet implemented".to_string(),
))
}
async fn send_rtcp(
&self,
_packet: &crate::packet::rtcp::RtcpPacket,
_dest: SocketAddr,
) -> Result<()> {
Err(Error::NotImplemented(
"TCP transport not yet implemented".to_string(),
))
}
async fn receive_packet(&self, _buffer: &mut [u8]) -> Result<(usize, SocketAddr)> {
Err(Error::NotImplemented(
"TCP transport not yet implemented".to_string(),
))
}
async fn close(&self) -> Result<()> {
Ok(())
}
fn subscribe(&self) -> broadcast::Receiver<RtpEvent> {
self.event_tx.subscribe()
}
fn as_any(&self) -> &dyn Any {
self
}
}