use std::sync::Arc;
use tokio::sync::RwLock;
use tracing::{debug, warn, info};
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())
}