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;
13
14use crate::{
15    builder::WsIoServerBuilder,
16    layer::WsIoServerLayer,
17    namespace::{
18        WsIoServerNamespace,
19        builder::WsIoServerNamespaceBuilder,
20    },
21    runtime::WsIoServerRuntime,
22};
23
24#[derive(Clone)]
25pub struct WsIoServer(Arc<WsIoServerRuntime>);
26
27impl WsIoServer {
28    // Public methods
29    pub fn builder() -> WsIoServerBuilder {
30        WsIoServerBuilder::new()
31    }
32
33    #[inline]
34    pub fn connection_count(&self) -> usize {
35        self.0.connection_count()
36    }
37
38    pub fn layer(&self) -> WsIoServerLayer {
39        WsIoServerLayer::new(self.0.clone())
40    }
41
42    #[inline]
43    pub fn new_namespace_builder(&self, path: impl AsRef<str>) -> Result<WsIoServerNamespaceBuilder> {
44        self.0.new_namespace_builder(path.as_ref())
45    }
46
47    #[inline]
48    pub fn of(&self, path: impl AsRef<str>) -> Option<Arc<WsIoServerNamespace>> {
49        self.0.get_namespace(path.as_ref())
50    }
51}