wsio_server/
lib.rs

1use std::sync::Arc;
2
3use anyhow::Result;
4pub use wsio_core as core;
5
6mod builder;
7mod config;
8pub mod connection;
9mod layer;
10mod namespace;
11mod runtime;
12mod service;
13mod types;
14
15use crate::{
16    builder::WsIoServerBuilder,
17    layer::WsIoServerLayer,
18    namespace::{
19        WsIoServerNamespace,
20        builder::WsIoServerNamespaceBuilder,
21    },
22    runtime::WsIoServerRuntime,
23};
24
25#[derive(Clone)]
26pub struct WsIoServer(Arc<WsIoServerRuntime>);
27
28impl WsIoServer {
29    // Public methods
30    pub fn builder() -> WsIoServerBuilder {
31        WsIoServerBuilder::new()
32    }
33
34    #[inline]
35    pub fn connection_count(&self) -> usize {
36        self.0.connection_count()
37    }
38
39    pub fn layer(&self) -> WsIoServerLayer {
40        WsIoServerLayer::new(self.0.clone())
41    }
42
43    #[inline]
44    pub fn new_namespace_builder(&self, path: impl AsRef<str>) -> Result<WsIoServerNamespaceBuilder> {
45        self.0.new_namespace_builder(path.as_ref())
46    }
47
48    #[inline]
49    pub fn of(&self, path: impl AsRef<str>) -> Option<Arc<WsIoServerNamespace>> {
50        self.0.get_namespace(path.as_ref())
51    }
52}