use crate::common::ConnectionType;
#[derive(Debug, Default, Clone)]
pub struct ClientCounts {
pub memory_clients: Vec<u16>,
pub native_count: usize,
pub wasm_wt_count: usize,
pub wasm_ws_count: usize,
}
impl ClientCounts {
pub fn add(&mut self, connection: ConnectionType, client_id: u64) {
match connection {
ConnectionType::Memory => {
self.memory_clients
.push(u16::try_from(client_id).expect("client ids >= u16::MAX not supported for in-memory connections"));
}
ConnectionType::Native => self.native_count = self.native_count.saturating_add(1),
ConnectionType::WasmWt => self.wasm_wt_count = self.wasm_wt_count.saturating_add(1),
ConnectionType::WasmWs => self.wasm_ws_count = self.wasm_ws_count.saturating_add(1),
}
}
pub fn total(&self) -> usize {
self.memory_clients
.len()
.saturating_add(self.native_count)
.saturating_add(self.wasm_wt_count)
.saturating_add(self.wasm_ws_count)
}
}