use crate::events::event_handler::EventHandler; use crate::protocol::AsyncProtocolStream; use std::sync::Arc; #[derive(Debug)] pub struct Namespace { name: String, pub(crate) handler: Arc>, } impl Clone for Namespace where S: AsyncProtocolStream, { fn clone(&self) -> Self { Self { name: self.name.clone(), handler: Arc::clone(&self.handler), } } } impl Namespace where S: AsyncProtocolStream, { /// Creates a new namespace with an event handler to register event callbacks on pub fn new(name: S2, handler: EventHandler) -> Self { Self { name: name.to_string(), handler: Arc::new(handler), } } pub fn name(&self) -> &String { &self.name } }