terminal-chat
29 строк · 724.0 Байт
1use std::{net::TcpListener, thread, sync::Arc};
2use anyhow::Result;
3use parking_lot::Mutex;
4
5use crate::{state::State, managers::Manager, messages_pool::MessagesPool};
6
7pub struct Service;
8
9impl Service {
10pub fn run(state: State) -> Result<()> {
11let listener = TcpListener::bind(format!("0.0.0.0:{}", state.get().settings.port))?;
12
13println!("Running!");
14
15let messages_pool = Arc::new(Mutex::new(MessagesPool::new()));
16
17for con in listener.incoming() {
18let cloned_state = state.clone();
19let cloned_messages_pool = messages_pool.clone();
20thread::spawn(move || -> Result<()> {
21Manager::new(con?, cloned_state, cloned_messages_pool)?;
22
23Ok(())
24});
25}
26
27Ok(())
28}
29}