Expand description
§yosemite
yosemite is a SAMv3 client library for interacting with the I2P network.
It provides synchronous and asynchronous APIs and supports both tokio and smol.
§Supported features
- Streams
- Forwarding
Read/Writefor synchronous streamsAsyncRead/AsyncWritefortokiostreamsAsyncRead/AsyncWriteforsmolstreams
- Datagrams
- Repliable
- Anonymous
- Primary sessions
§Usage
tokio is enabled by default:
yosemite = "0.7.0"sync enables synchronous APIs:
yosemite = { version = "0.7.0", default-features = false, features = ["sync"] }smol enables asynchronous APIs implemented with smol:
yosemite = { version = "0.7.0", default-features = false, features = ["smol"] }tokio, smol, and sync are all mutually exclusive and only one them can be enabled. The APIs are otherwise the same but tokio and smol require blocking calls to .await.
§Example usage of the API:
ⓘ
use tokio::io::AsyncReadExt;
use yosemite::{style::Stream, Session};
#[tokio::main]
async fn main() -> yosemite::Result<()> {
let mut session = Session::<Stream>::new(Default::default()).await?;
while let Ok(mut stream) = session.accept().await {
println!("{} connected", stream.remote_destination());
tokio::spawn(async move {
let mut buffer = vec![0u8; 512];
while let Ok(nread) = stream.read(&mut buffer).await {
println!(
"client sent: {:?}",
std::str::from_utf8(&buffer[..nread])
);
}
});
}
Ok(())
}See examples for instructions on how to use yosemite.
§Copying
MIT
Modules§
- style
- Session style.
Structs§
- Datagram
Options - Datagram options.
- Read
Half - Read half of
Stream. - Router
Api - Router API.
- Session
- SAMv3 session.
- Session
Options - Session options.
- Stream
- Asynchronous virtual stream.
- Stream
Options - Stream options.
- Write
Half - Write half of
Stream.
Enums§
- Destination
Kind - Destination kind.
- Error
yosemiteerror type.- I2pError
- I2P error.
- Protocol
Error - Protocol error.
Type Aliases§
- Result
- Result type of the crate.