ppaass_protocol_v2/business_obj/
tunnel.rs

1use crate::PpaassProtocolUnifyAddress;
2use bytes::Bytes;
3use derive_more::{Constructor, Display};
4use serde::{Deserialize, Serialize};
5#[derive(Serialize, Deserialize, Debug, Display, Copy, Clone)]
6pub enum TunnelType {
7    #[display("TCP")]
8    Tcp,
9    #[display("UDP")]
10    Udp,
11}
12
13#[derive(Serialize, Deserialize, Debug, Constructor, Display)]
14#[display(
15    r#"{{
16    tunnel_id: {tunnel_id},
17    tunnel_type: {tunnel_type},
18    src_address: {src_address},
19    dst_address: {dst_address},
20    }}"#
21)]
22pub struct TunnelInit {
23    tunnel_id: String,
24    tunnel_type: TunnelType,
25    src_address: PpaassProtocolUnifyAddress,
26    dst_address: PpaassProtocolUnifyAddress,
27}
28
29impl TunnelInit {
30    pub fn tunnel_id(&self) -> &str {
31        self.tunnel_id.as_str()
32    }
33
34    pub fn tunnel_type(&self) -> TunnelType {
35        self.tunnel_type
36    }
37
38    pub fn src_address(&self) -> &PpaassProtocolUnifyAddress {
39        &self.src_address
40    }
41
42    pub fn dst_address(&self) -> &PpaassProtocolUnifyAddress {
43        &self.dst_address
44    }
45}
46
47#[derive(Serialize, Deserialize, Debug, Constructor, Display)]
48#[display(
49    r#"{{
50    tunnel_id: {tunnel_id},
51    tunnel_type: {tunnel_type},
52    src_address: {src_address},
53    dst_address: {dst_address},
54    tunnel_data: {tunnel_data:?}
55    }}"#
56)]
57pub struct TunnelData {
58    tunnel_id: String,
59    tunnel_type: TunnelType,
60    src_address: PpaassProtocolUnifyAddress,
61    dst_address: PpaassProtocolUnifyAddress,
62    tunnel_data: Bytes,
63}
64
65impl TunnelData {
66    pub fn tunnel_id(&self) -> &str {
67        self.tunnel_id.as_str()
68    }
69
70    pub fn tunnel_type(&self) -> TunnelType {
71        self.tunnel_type
72    }
73
74    pub fn src_address(&self) -> &PpaassProtocolUnifyAddress {
75        &self.src_address
76    }
77
78    pub fn dst_address(&self) -> &PpaassProtocolUnifyAddress {
79        &self.dst_address
80    }
81}
82
83#[derive(Serialize, Deserialize, Debug, Constructor, Display)]
84#[display(
85    r#"{{
86    tunnel_id: {tunnel_id},
87    src_address: {src_address},
88    dst_address: {dst_address},
89    }}"#
90)]
91pub struct TunnelClose {
92    tunnel_id: String,
93    src_address: PpaassProtocolUnifyAddress,
94    dst_address: PpaassProtocolUnifyAddress,
95}
96
97impl TunnelClose {
98    pub fn tunnel_id(&self) -> &str {
99        self.tunnel_id.as_str()
100    }
101
102    pub fn src_address(&self) -> &PpaassProtocolUnifyAddress {
103        &self.src_address
104    }
105
106    pub fn dst_address(&self) -> &PpaassProtocolUnifyAddress {
107        &self.dst_address
108    }
109}