virtual_file_system/socket/
address.rs1use file_system::PathOwned;
2
3use network::{IP, IPv4, IPv6, Port};
4
5#[derive(Debug, Clone, PartialEq, Eq)]
6pub enum SockerAddress {
7 IPv4(IPv4, Port),
8 IPv6(IPv6, Port),
9 Local(PathOwned),
10}
11
12impl SockerAddress {
13 pub fn into_ip_and_port(self) -> Option<(IP, Port)> {
14 match self {
15 Self::IPv4(ip, port) => Some((ip.into(), port)),
16 Self::IPv6(ip, port) => Some((ip.into(), port)),
17 _ => None,
18 }
19 }
20
21 pub const fn from_ip_and_port(ip: IP, port: Port) -> Self {
22 match ip {
23 IP::IPv4(ip) => Self::IPv4(ip, port),
24 IP::IPv6(ip) => Self::IPv6(ip, port),
25 }
26 }
27}
28
29impl From<(IPv4, Port)> for SockerAddress {
30 fn from((ip, port): (IPv4, Port)) -> Self {
31 Self::IPv4(ip, port)
32 }
33}
34
35impl From<(IPv6, Port)> for SockerAddress {
36 fn from((ip, port): (IPv6, Port)) -> Self {
37 Self::IPv6(ip, port)
38 }
39}
40
41impl From<PathOwned> for SockerAddress {
42 fn from(path: PathOwned) -> Self {
43 Self::Local(path)
44 }
45}