dope_core/io/socket/addr/
unix.rs1use std::{os::unix, path};
2
3use dope_sys::io::socket::{Domain, addr};
4
5use crate::io::socket::{Addr, Error, Prepared, StreamSpec, addr::prepared};
6
7#[derive(Clone, Copy)]
9pub struct Unix {
10 native: addr::Unix,
11}
12
13impl Unix {
14 pub fn from_path(path: &path::Path) -> Result<Self, Error> {
15 let bytes = unix::ffi::OsStrExt::as_bytes(path.as_os_str());
16 Ok(Self {
17 native: addr::Unix::from_path::<crate::Backend>(bytes).map_err(Error::from_path)?,
18 })
19 }
20}
21
22impl prepared::Sealed for Unix {}
23
24impl Prepared for Unix {
25 fn view(&self) -> prepared::View<'_> {
26 prepared::View(self.native.as_addr())
27 }
28
29 fn stream_spec(&self) -> StreamSpec {
30 StreamSpec(Domain::Unix)
31 }
32}
33
34const _: () = {
35 assert!(size_of::<addr::Unix>() == size_of::<Unix>());
36 assert!(size_of::<Unix>() < size_of::<Addr>());
37};