pub mod alloc;
pub mod config;
pub mod error;
pub mod frame;
pub mod session;
pub mod shaper;
pub mod stream;
pub use config::Config;
pub use error::SmuxError;
pub use session::Session;
pub use stream::Stream;
use session::AsyncReadWrite;
use std::sync::Arc;
pub async fn server(
conn: Box<dyn AsyncReadWrite + Send + Unpin>,
config: Option<Config>,
) -> Result<Arc<Session>, SmuxError> {
let config = config.unwrap_or_else(Config::default);
Session::new(config, conn, false).await
}
pub async fn client(
conn: Box<dyn AsyncReadWrite + Send + Unpin>,
config: Option<Config>,
) -> Result<Arc<Session>, SmuxError> {
let config = config.unwrap_or_else(Config::default);
Session::new(config, conn, true).await
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_config_default() {
let config = Config::default();
assert_eq!(config.version, 1);
assert!(!config.keep_alive_disabled);
}
#[test]
fn test_config_verify() {
let mut config = Config::default();
config.version = 3;
assert!(config.verify().is_err());
}
}