use tungstenite::protocol::WebSocketConfig;
pub mod event;
pub mod packet;
pub mod traits;
pub mod types;
pub mod utils;
pub fn channel_capacity_from_websocket_config(websocket_config: &WebSocketConfig) -> usize {
let ratio = (websocket_config.max_write_buffer_size as f64 / websocket_config.write_buffer_size as f64).max(1.0);
let capacity = (ratio.log2() * 256.0).round() as usize;
capacity.clamp(64, 16384)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_channel_capacity_from_websocket_config() {
let mut config = WebSocketConfig::default();
config.write_buffer_size = 1024;
config.max_write_buffer_size = 1024 * 16; let capacity = channel_capacity_from_websocket_config(&config);
assert_eq!(capacity, 1024);
config.write_buffer_size = 1024;
config.max_write_buffer_size = 512;
let capacity = channel_capacity_from_websocket_config(&config);
assert_eq!(capacity, 64);
config.write_buffer_size = 1024;
config.max_write_buffer_size = 1024 * 1024 * 1024; let capacity = channel_capacity_from_websocket_config(&config);
assert_eq!(capacity, 5120);
config.write_buffer_size = 1;
config.max_write_buffer_size = 1024 * 1024 * 1024 * 1024; let capacity = channel_capacity_from_websocket_config(&config);
assert_eq!(capacity, 10240); }
}