diff --git a/euphoxide-client/src/multi.rs b/euphoxide-client/src/multi.rs index f3f9559..dbdbc6c 100644 --- a/euphoxide-client/src/multi.rs +++ b/euphoxide-client/src/multi.rs @@ -199,6 +199,10 @@ impl MultiClient { } } + pub fn config(&self) -> &MultiClientConfig { + &self.config + } + pub fn start_time(&self) -> Timestamp { self.start_time } diff --git a/euphoxide-client/src/single.rs b/euphoxide-client/src/single.rs index 6b54a3c..c2a3cc4 100644 --- a/euphoxide-client/src/single.rs +++ b/euphoxide-client/src/single.rs @@ -1,4 +1,4 @@ -use std::{fmt, result, str::FromStr}; +use std::{fmt, result, str::FromStr, sync::Arc}; use cookie::Cookie; use euphoxide::{ @@ -120,7 +120,7 @@ impl ClientEvent { struct ClientTask { id: usize, - config: ClientConfig, + config: Arc, cmd_rx: mpsc::Receiver, event_tx: mpsc::Sender, @@ -337,6 +337,7 @@ impl ClientTask { #[derive(Clone)] pub struct Client { id: usize, + config: Arc, cmd_tx: mpsc::Sender, start_time: Timestamp, } @@ -353,11 +354,13 @@ impl Client { pub fn new(id: usize, config: ClientConfig, event_tx: mpsc::Sender) -> Self { let start_time = Timestamp::now(); + let config = Arc::new(config); + let (cmd_tx, cmd_rx) = mpsc::channel(config.server.cmd_channel_bufsize); let task = ClientTask { id, - config, + config: config.clone(), attempts: 0, never_joined: false, cmd_rx, @@ -368,6 +371,7 @@ impl Client { Self { id, + config, cmd_tx, start_time, } @@ -377,6 +381,10 @@ impl Client { self.id } + pub fn config(&self) -> &ClientConfig { + &self.config + } + pub fn start_time(&self) -> Timestamp { self.start_time }