inn_network/
messages.rs

1//-------------------------------------------------------------------
2// MIT License
3// Copyright (c) 2022 black-mongo
4// @author CameronYang
5// @doc
6//
7// @end
8// Created : 2022-04-15T11:16:30+08:00
9//-------------------------------------------------------------------
10
11use std::collections::HashMap;
12
13use actix::Message;
14use actix::Recipient;
15use serde::Deserialize;
16use serde::Serialize;
17
18use crate::codec::DstAddress;
19// Command Message to session actor
20#[derive(Debug, Clone)]
21pub enum ToSession {
22    Ping,
23    Stop,
24    Meta,
25    RemoteConnected(Recipient<ToFoward>, DstAddress),
26    RemoteConnectionRefuse,
27    Forward(Vec<u8>),
28    ProxyServerReply(ProxyServerReply),
29}
30// Message reply from session actor
31#[derive(Debug, PartialEq)]
32pub enum SessionReply {
33    Pong,
34    Meta(SessionMeta),
35    Ok,
36}
37impl Message for ToSession {
38    type Result = SessionReply;
39}
40
41#[derive(Default, Debug, PartialEq)]
42pub struct SessionMeta(pub usize);
43
44#[derive(Debug)]
45pub enum ToProxyServer {
46    Connect(Recipient<ToSession>),
47    DisConnect(usize),
48    OnlineCounter(usize),
49    Cli(usize, inn_common::cli::Cli),
50    HttpReq(Box<WsHttpReq>),
51}
52#[derive(Debug, PartialEq, Clone)]
53pub enum ProxyServerReply {
54    Id(usize),
55    OnlineCounter(usize),
56    Ok,
57    Cli(inn_common::cli::Cli),
58    HttpReq(Box<WsHttpReq>),
59}
60impl Message for ToProxyServer {
61    type Result = ProxyServerReply;
62}
63#[derive(Debug, PartialEq)]
64pub enum ToFoward {
65    Stop,
66    Forward(Vec<u8>),
67}
68pub enum ForwardReply {
69    Ok,
70}
71impl Message for ToFoward {
72    type Result = ForwardReply;
73}
74#[derive(Serialize, Deserialize)]
75#[serde(rename_all = "lowercase")]
76pub enum MsgName {
77    HttpReq,
78}
79#[derive(Serialize, Deserialize, Clone, Default, Debug, PartialEq)]
80#[serde(rename_all = "lowercase")]
81pub struct WsHttpReq {
82    pub id: String,
83    pub uri: String,
84    pub headers: HashMap<String, String>,
85    pub status: u16,
86    pub error: String,
87    pub method: String,
88    pub req_body: String,
89    pub time: String,
90    pub host: String,
91    pub server_ip: String,
92    pub protocol: String,
93    pub resp_headers: HashMap<String, String>,
94    pub resp_body: String,
95}
96#[derive(Serialize, Deserialize)]
97#[serde(rename_all = "lowercase")]
98pub struct WsMsg<T> {
99    pub msg_name: MsgName,
100    pub msg: T,
101}