dope-core 0.15.1

The manifold runtime
Documentation
use std::{io, net, path};

use crate::io::socket;

#[derive(Clone, Copy, Debug)]
#[repr(transparent)]
pub struct Addr(socket::raw::Addr);

impl Addr {
    pub fn from_std(addr: net::SocketAddr) -> Self {
        Self(socket::raw::Addr::from_std(addr))
    }

    pub fn from_unix_path(path: &path::Path) -> io::Result<Self> {
        socket::raw::Addr::from_unix_path(path).map(Self)
    }

    pub fn into_std(self) -> io::Result<net::SocketAddr> {
        self.0.into_std()
    }

    pub(crate) const STORAGE_CAPACITY: usize = socket::raw::Addr::STORAGE_CAPACITY;

    pub(crate) fn from_raw(addr: socket::raw::Addr) -> Self {
        Self(addr)
    }

    pub(crate) const fn raw(&self) -> &socket::raw::Addr {
        &self.0
    }

    pub(crate) fn parse_msg_name(name: &[u8]) -> Option<net::SocketAddr> {
        if name.len() > Self::STORAGE_CAPACITY {
            return None;
        }
        socket::raw::Addr::parse_msg_name(name)
    }
}