dope_core/io/socket/
addr.rs1use std::{io, net, path};
2
3use crate::io::socket;
4
5#[derive(Clone, Copy, Debug)]
6#[repr(transparent)]
7pub struct Addr(socket::raw::Addr);
8
9impl Addr {
10 pub fn from_std(addr: net::SocketAddr) -> Self {
11 Self(socket::raw::Addr::from_std(addr))
12 }
13
14 pub fn from_unix_path(path: &path::Path) -> io::Result<Self> {
15 socket::raw::Addr::from_unix_path(path).map(Self)
16 }
17
18 pub fn into_std(self) -> io::Result<net::SocketAddr> {
19 self.0.into_std()
20 }
21
22 pub(crate) const STORAGE_CAPACITY: usize = socket::raw::Addr::STORAGE_CAPACITY;
23
24 pub(crate) fn from_raw(addr: socket::raw::Addr) -> Self {
25 Self(addr)
26 }
27
28 pub(crate) const fn raw(&self) -> &socket::raw::Addr {
29 &self.0
30 }
31
32 pub(crate) fn parse_msg_name(name: &[u8]) -> Option<net::SocketAddr> {
33 if name.len() > Self::STORAGE_CAPACITY {
34 return None;
35 }
36 socket::raw::Addr::parse_msg_name(name)
37 }
38}