mahjong_service/socket/
messages.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use super::session::{RoomId, SessionId};
use actix::prelude::*;
use rustc_hash::FxHashMap;
use service_contracts::SocketMessage;

#[derive(Message)]
#[rtype(result = "()")]
pub struct SocketMessageStr(pub String);

#[derive(Message)]
#[rtype(usize)]
pub struct SocketMessageConnect {
    pub room: RoomId,
    pub addr: Recipient<SocketMessageStr>,
}

#[derive(Message)]
#[rtype(result = "()")]
pub struct SocketMessageDisconnect {
    pub id: SessionId,
}

#[derive(Message)]
#[rtype(result = "()")]
pub struct SocketClientMessage {
    pub id: SessionId,
    pub msg: SocketMessage,
    pub room: RoomId,
}

pub struct SocketMessageListRooms;

impl actix::Message for SocketMessageListRooms {
    type Result = Vec<RoomId>;
}

pub struct SocketMessageListSessions;

impl actix::Message for SocketMessageListSessions {
    type Result = FxHashMap<RoomId, usize>;
}