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 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}