Skip to main content

Crate yosemite

Crate yosemite 

Source
Expand description

§yosemite

License Crates.io docs.rs

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

§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§

DatagramOptions
Datagram options.
ReadHalf
Read half of Stream.
RouterApi
Router API.
Session
SAMv3 session.
SessionOptions
Session options.
Stream
Asynchronous virtual stream.
StreamOptions
Stream options.
WriteHalf
Write half of Stream.

Enums§

DestinationKind
Destination kind.
Error
yosemite error type.
I2pError
I2P error.
ProtocolError
Protocol error.

Type Aliases§

Result
Result type of the crate.