terminal-chat

Форк
0
37 строк · 957.0 Байт
1
use std::{
2
  net::TcpStream, 
3
  io::BufReader, 
4
  sync::Arc
5
};
6
use parking_lot::Mutex;
7
use anyhow::Result;
8

9
use crate::{state::State, messages_pool::MessagesPool};
10
use super::stream_manager::StreamManager;
11

12
pub struct Manager {
13
  pub stream: TcpStream,
14
  pub reader: BufReader<TcpStream>,
15
  pub state: State,
16
  pub messages_pool: Arc<Mutex<MessagesPool>>,
17
  pub last_read_message_id: String,
18
  pub connected_user_username: Option<String>,
19
  pub connected_peer_addr: String
20
}
21

22
impl Manager {
23
  pub fn new(stream: TcpStream, state: State, messages_pool: Arc<Mutex<MessagesPool>>) -> Result<()> {
24
    let mut manager = Manager {
25
      stream: stream.try_clone()?,
26
      reader: BufReader::new(stream.try_clone()?),
27
      state,
28
      messages_pool,
29
      last_read_message_id: String::new(),
30
      connected_user_username: None,
31
      connected_peer_addr: stream.try_clone()?.peer_addr()?.to_string()
32
    };
33

34
    manager.process_connection()?;
35
    Ok(())
36
  }
37
}

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

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

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

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