1use tungstenite::protocol::WebSocketConfig;
2
3pub mod event;
4pub mod packet;
5pub mod traits;
6pub mod types;
7pub mod utils;
8
9pub fn channel_capacity_from_websocket_config(websocket_config: &WebSocketConfig) -> usize {
10 let ratio = (websocket_config.max_write_buffer_size as f64 / websocket_config.write_buffer_size as f64).max(1.0);
11 let capacity = (ratio.log2() * 256.0).round() as usize;
12 capacity.clamp(64, 16384)
13}
14
15#[cfg(test)]
16mod tests {
17 use super::*;
18
19 #[test]
20 fn test_channel_capacity_from_websocket_config() {
21 let mut config = WebSocketConfig::default();
22
23 config.write_buffer_size = 1024;
25 config.max_write_buffer_size = 1024 * 16; let capacity = channel_capacity_from_websocket_config(&config);
27 assert_eq!(capacity, 1024); config.write_buffer_size = 1024;
31 config.max_write_buffer_size = 512;
32 let capacity = channel_capacity_from_websocket_config(&config);
33 assert_eq!(capacity, 64); config.write_buffer_size = 1024;
37 config.max_write_buffer_size = 1024 * 1024 * 1024; let capacity = channel_capacity_from_websocket_config(&config);
39 assert_eq!(capacity, 5120); config.write_buffer_size = 1;
43 config.max_write_buffer_size = 1024 * 1024 * 1024 * 1024; let capacity = channel_capacity_from_websocket_config(&config);
45 assert_eq!(capacity, 10240); }
47}