use crate::PpaassProtocolUnifyAddress;
use bytes::Bytes;
use derive_more::{Constructor, Display};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Display, Copy, Clone)]
pub enum TunnelType {
#[display("TCP")]
Tcp,
#[display("UDP")]
Udp,
}
#[derive(Serialize, Deserialize, Debug, Constructor, Display)]
#[display(
r#"{{
tunnel_id: {tunnel_id},
tunnel_type: {tunnel_type},
src_address: {src_address},
dst_address: {dst_address},
}}"#
)]
pub struct TunnelInit {
tunnel_id: String,
tunnel_type: TunnelType,
src_address: PpaassProtocolUnifyAddress,
dst_address: PpaassProtocolUnifyAddress,
}
impl TunnelInit {
pub fn tunnel_id(&self) -> &str {
self.tunnel_id.as_str()
}
pub fn tunnel_type(&self) -> TunnelType {
self.tunnel_type
}
pub fn src_address(&self) -> &PpaassProtocolUnifyAddress {
&self.src_address
}
pub fn dst_address(&self) -> &PpaassProtocolUnifyAddress {
&self.dst_address
}
}
#[derive(Serialize, Deserialize, Debug, Constructor, Display)]
#[display(
r#"{{
tunnel_id: {tunnel_id},
tunnel_type: {tunnel_type},
src_address: {src_address},
dst_address: {dst_address},
tunnel_data: {tunnel_data:?}
}}"#
)]
pub struct TunnelData {
tunnel_id: String,
tunnel_type: TunnelType,
src_address: PpaassProtocolUnifyAddress,
dst_address: PpaassProtocolUnifyAddress,
tunnel_data: Bytes,
}
impl TunnelData {
pub fn tunnel_id(&self) -> &str {
self.tunnel_id.as_str()
}
pub fn tunnel_type(&self) -> TunnelType {
self.tunnel_type
}
pub fn src_address(&self) -> &PpaassProtocolUnifyAddress {
&self.src_address
}
pub fn dst_address(&self) -> &PpaassProtocolUnifyAddress {
&self.dst_address
}
}
#[derive(Serialize, Deserialize, Debug, Constructor, Display)]
#[display(
r#"{{
tunnel_id: {tunnel_id},
src_address: {src_address},
dst_address: {dst_address},
}}"#
)]
pub struct TunnelClose {
tunnel_id: String,
src_address: PpaassProtocolUnifyAddress,
dst_address: PpaassProtocolUnifyAddress,
}
impl TunnelClose {
pub fn tunnel_id(&self) -> &str {
self.tunnel_id.as_str()
}
pub fn src_address(&self) -> &PpaassProtocolUnifyAddress {
&self.src_address
}
pub fn dst_address(&self) -> &PpaassProtocolUnifyAddress {
&self.dst_address
}
}