Expand description
Tokio IPC transport. Under the hood uses Unix Domain Sockets for Linux/Mac and Named Pipes for Windows.
§tipsy
This is a fork of parity-tokio-ipc.
tipsy is a library for cross-platform async
IPC using Tokio. It utilizes unix sockets on UNIX (via
tokio::net::UnixStream
)
and named pipes on windows (via
tokio::net::windows::named_pipe
).
§Server
use futures_util::stream::StreamExt;
use std::error::Error;
use tipsy::{Endpoint, OnConflict, ServerId};
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
Endpoint::new(ServerId::new("my-server"), OnConflict::Overwrite)?
.incoming()?
.for_each(|conn| async {
match conn {
Ok(stream) => println!("Got connection!"),
Err(e) => eprintln!("Error when receiving connection: {:?}", e),
}
});
Ok(())
}
§Client
use std::error::Error;
use tipsy::{Endpoint, ServerId};
use tokio::io::AsyncWriteExt;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let mut client = Endpoint::connect(ServerId::new("my-server")).await?;
client.write_all(b"ping").await?;
Ok(())
}
§Examples
See examples.
§Supported Rust Versions
The MSRV is currently 1.85.0
. Since Cargo’s V3 resolver supports MSRV-aware
dependencies, we do not treat an MSRV bump as a breaking change.
Structs§
- Connection
- IPC connection.
- Endpoint
- IPC endpoint.
- IpcStream
- Stream of incoming connections.
- Security
Attributes - Permissions and ownership for the IPC connection
- Server
Id - Cross-platform representation of an IPC connection path.
Enums§
- OnConflict
- How to proceed when the socket path already exists
Traits§
- Into
IpcPath - Path used for an IPC client or server.