Skip to repository content

tenant.openagents/omega

No repository description is available.

OpenAgents Git authority 2026-07-28T04:00:23.609Z Public web read
NIP-34 coordinate30617:7649603503856e5148d571eac2766b288a8ff1e9e35d380337a1d2b0015b4f92:omega
MaintainersHidden in public view
References2 branches · 1 tag
Read-only clonegit clone https://openagents.com/git/tenant.openagents/omega.git
Browse files

async_net.rs

70 lines · 1.9 KB · rust
1#[cfg(not(target_os = "windows"))]
2pub use smol::net::unix::{UnixListener, UnixStream};
3
4#[cfg(target_os = "windows")]
5pub use windows::{UnixListener, UnixStream};
6
7#[cfg(target_os = "windows")]
8pub mod windows {
9    use std::{
10        io::Result,
11        path::Path,
12        pin::Pin,
13        task::{Context, Poll},
14    };
15
16    use smol::{
17        Async,
18        io::{AsyncRead, AsyncWrite},
19    };
20
21    pub struct UnixListener(Async<crate::UnixListener>);
22
23    impl UnixListener {
24        pub fn bind<P: AsRef<Path>>(path: P) -> Result<Self> {
25            Ok(UnixListener(Async::new(crate::UnixListener::bind(path)?)?))
26        }
27
28        pub async fn accept(&self) -> Result<(UnixStream, ())> {
29            let (sock, _) = self.0.read_with(|listener| listener.accept()).await?;
30            Ok((UnixStream(Async::new(sock)?), ()))
31        }
32    }
33
34    pub struct UnixStream(Async<crate::UnixStream>);
35
36    impl UnixStream {
37        pub async fn connect<P: AsRef<Path>>(path: P) -> Result<Self> {
38            Ok(UnixStream(Async::new(crate::UnixStream::connect(path)?)?))
39        }
40    }
41
42    impl AsyncRead for UnixStream {
43        fn poll_read(
44            mut self: Pin<&mut Self>,
45            cx: &mut Context<'_>,
46            buf: &mut [u8],
47        ) -> Poll<Result<usize>> {
48            Pin::new(&mut self.0).poll_read(cx, buf)
49        }
50    }
51
52    impl AsyncWrite for UnixStream {
53        fn poll_write(
54            mut self: Pin<&mut Self>,
55            cx: &mut Context<'_>,
56            buf: &[u8],
57        ) -> Poll<Result<usize>> {
58            Pin::new(&mut self.0).poll_write(cx, buf)
59        }
60
61        fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>> {
62            Pin::new(&mut self.0).poll_flush(cx)
63        }
64
65        fn poll_close(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>> {
66            Pin::new(&mut self.0).poll_close(cx)
67        }
68    }
69}
70
Served at tenant.openagents/omega Member data and write actions are omitted.