terminal-chat

Форк
0
/
service.rs 
29 строк · 724.0 Байт
1
use std::{net::TcpListener, thread, sync::Arc};
2
use anyhow::Result;
3
use parking_lot::Mutex;
4

5
use crate::{state::State, managers::Manager, messages_pool::MessagesPool};
6

7
pub struct Service;
8

9
impl Service {
10
  pub fn run(state: State) -> Result<()> {
11
    let listener = TcpListener::bind(format!("0.0.0.0:{}", state.get().settings.port))?;
12

13
    println!("Running!");
14

15
    let messages_pool = Arc::new(Mutex::new(MessagesPool::new()));
16

17
    for con in listener.incoming() {
18
      let cloned_state = state.clone();
19
      let cloned_messages_pool = messages_pool.clone();
20
      thread::spawn(move || -> Result<()> {
21
        Manager::new(con?, cloned_state, cloned_messages_pool)?;
22

23
        Ok(())
24
      });
25
    }
26

27
    Ok(())
28
  }
29
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.