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 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 namespace_count(&self) -> usize {
44 self.0.namespace_count()
45 }
46
47 #[inline]
48 pub fn new_namespace_builder(&self, path: impl AsRef<str>) -> Result<WsIoServerNamespaceBuilder> {
49 self.0.new_namespace_builder(path.as_ref())
50 }
51
52 #[inline]
53 pub fn of(&self, path: impl AsRef<str>) -> Option<Arc<WsIoServerNamespace>> {
54 self.0.get_namespace(path.as_ref())
55 }
56}