Untitled
unknown
rust
a year ago
1.2 kB
1
Indexable
Never
impl LogThread { fn thread_create() -> LogThread { let (sender, mut receiver) = mpsc::channel::<Command>(32); let thread = tokio::spawn(async move { while let Some(cmd) = receiver.recv().await { // -- here i need log_data queue -- // } }); LogThread { thread, sender } } async fn thread_close(self) -> Result<(), tokio::task::JoinError> { self.thread.await } } pub struct Log { log_data: VecDeque<LogData>, database: MongoDBConnection, thread: LogThread, } impl Log { pub fn log(&mut self, category: &str, subcategory: &str, logtext: &str) { let log_data_value = LogData::log_data(category, subcategory, logtext); self.log_data.push_front(log_data_value); self.send_signal(); } fn send_signal(&self) { block_on(self.thread.sender.send(Command::SendData)).unwrap_or_default() } fn get_logdata(&self) -> Iter<LogData> { self.log_data.iter() } pub async fn close(self) { let close = self.thread.thread_close(); } }