use std::sync::Arc;
use tokio::sync::RwLock;
use tracing::debug;
use crate::api::common::error::MediaTransportError;
use crate::buffer::{TransmitBuffer, TransmitBufferStats};
pub async fn get_transmit_buffer_stats(
high_performance_buffers_enabled: bool,
transmit_buffer: &Arc<RwLock<Option<TransmitBuffer>>>,
) -> Result<TransmitBufferStats, MediaTransportError> {
if high_performance_buffers_enabled {
let tx_buffer_guard = transmit_buffer.read().await;
if let Some(tx_buffer) = tx_buffer_guard.as_ref() {
let stats = tx_buffer.get_stats();
debug!(
"Retrieved transmit buffer stats: {} packets queued, {:.1}% full",
stats.packets_queued,
stats.buffer_fullness * 100.0
);
return Ok(stats);
}
}
debug!("No transmit buffer available, returning default stats");
Ok(TransmitBufferStats::default())
}