diff --git a/src/server/connection.rs b/src/server/connection.rs index fe892f5..d12b0ef 100644 --- a/src/server/connection.rs +++ b/src/server/connection.rs @@ -32,7 +32,7 @@ impl Connection { } pub fn handle(mut self) { - self.session.event.connection.update(&self.address.client); + self.session.stats.connections.add(&self.address.client); let mut t = 0; // total bytes match self.request() { Ok(q) => { @@ -42,7 +42,7 @@ impl Connection { )); self.session .clone() - .storage + .public .request(&q, |r| t += self.response(r)); // chunk loop self.session .access_log @@ -74,8 +74,8 @@ impl Connection { &if is_root { self.session.template.welcome( Some(s), - Some(self.session.event.connection.hosts()), - Some(self.session.event.connection.hits()), + Some(self.session.stats.connections.count()), + Some(self.session.stats.connections.total()), ) } else { self.session.template.index(Some(s)) diff --git a/src/session.rs b/src/session.rs index b46f772..e6b054c 100644 --- a/src/session.rs +++ b/src/session.rs @@ -1,17 +1,17 @@ mod access_log; mod debug; -mod event; -mod storage; +mod public; +mod stats; mod template; -use {access_log::AccessLog, debug::Debug, event::Event, storage::Storage, template::Template}; +use {access_log::AccessLog, debug::Debug, public::Public, stats::Stats, template::Template}; /// Shared, multi-thread features for the current server session pub struct Session { pub access_log: AccessLog, pub debug: Debug, - pub event: Event, - pub storage: Storage, + pub stats: Stats, + pub public: Public, pub template: Template, } @@ -21,11 +21,11 @@ impl Session { Ok(Self { access_log: AccessLog::init(config)?, debug: Debug::init(config)?, - event: Event::init( + stats: Stats::init( // do not init `Connection` event if its features not in use template.welcome.contains("{hosts}") || template.welcome.contains("{hits}"), )?, - storage: Storage::init(config)?, + public: Public::init(config)?, template, }) } diff --git a/src/session/event.rs b/src/session/event.rs deleted file mode 100644 index c2e8386..0000000 --- a/src/session/event.rs +++ /dev/null @@ -1,15 +0,0 @@ -mod connection; -use connection::Connection; - -pub struct Event { - pub connection: Connection, - // another features... -} - -impl Event { - pub fn init(is_connection_enabled: bool) -> anyhow::Result { - Ok(Self { - connection: Connection::init(is_connection_enabled), - }) - } -} diff --git a/src/session/storage.rs b/src/session/public.rs similarity index 99% rename from src/session/storage.rs rename to src/session/public.rs index 0e43b0e..f52e67b 100644 --- a/src/session/storage.rs +++ b/src/session/public.rs @@ -11,7 +11,7 @@ use std::{ }; /// In-session disk storage API -pub struct Storage { +pub struct Public { /// Listing options list_config: ListConfig, /// Root path to storage, used also for the access validation @@ -24,7 +24,7 @@ pub struct Storage { show_hidden: bool, } -impl Storage { +impl Public { pub fn init(config: &crate::config::Config) -> Result { let public_dir = PathBuf::from_str(&config.public)?.canonicalize()?; let t = fs::metadata(&public_dir)?; diff --git a/src/session/storage/list_config.rs b/src/session/public/list_config.rs similarity index 100% rename from src/session/storage/list_config.rs rename to src/session/public/list_config.rs diff --git a/src/session/stats.rs b/src/session/stats.rs new file mode 100644 index 0000000..50674d7 --- /dev/null +++ b/src/session/stats.rs @@ -0,0 +1,15 @@ +mod connections; +use connections::Connections; + +pub struct Stats { + pub connections: Connections, + // another features... +} + +impl Stats { + pub fn init(is_connection_enabled: bool) -> anyhow::Result { + Ok(Self { + connections: Connections::init(is_connection_enabled), + }) + } +} diff --git a/src/session/event/connection.rs b/src/session/stats/connections.rs similarity index 80% rename from src/session/event/connection.rs rename to src/session/stats/connections.rs index e0b1ec5..f9dbc05 100644 --- a/src/session/event/connection.rs +++ b/src/session/stats/connections.rs @@ -5,9 +5,9 @@ use std::{ }; /// Count peer connections (for the current server session) -pub struct Connection(Option>>); +pub struct Connections(Option>>); -impl Connection { +impl Connections { pub fn init(is_enabled: bool) -> Self { if is_enabled { Self(Some(RwLock::new(HashMap::with_capacity(100)))) @@ -16,7 +16,7 @@ impl Connection { } } - pub fn update(&self, peer: &SocketAddr) { + pub fn add(&self, peer: &SocketAddr) { if let Some(ref this) = self.0 { this.write() .unwrap() @@ -26,7 +26,7 @@ impl Connection { } } - pub fn hosts(&self) -> usize { + pub fn count(&self) -> usize { if let Some(ref this) = self.0 { this.read().unwrap().len() } else { @@ -34,7 +34,7 @@ impl Connection { } } - pub fn hits(&self) -> usize { + pub fn total(&self) -> usize { if let Some(ref this) = self.0 { this.read().unwrap().values().sum() } else {