Zer0 Secret Stream
Bridge IO
Bridge IO adapters in `zer0-secret-stream` — wrap a secret stream around any async-IO endpoint with consistent framing.
Purpose
Noise-style secret stream with handshakes, framing, bridge IO, tunables, metrics, and typed errors.
This page follows the real source shape for Zer0 Secret Stream and explains the workflow a developer is likely to use first.
Developer workflow
Start from the smallest constructor or builder, perform one meaningful operation, inspect the returned state, then add the relevant policy, storage, or network integration. The examples below should be expanded whenever the crate API changes.
Primary types to know
Bridge— network/zer0-secret-stream/src/bridge.rsBridgeReverse— network/zer0-secret-stream/src/bridge.rsHandshake— network/zer0-secret-stream/src/handshake.rsHandshakeResult— network/zer0-secret-stream/src/handshake.rsMessage— network/zer0-secret-stream/src/lib.rsSecretOptions— network/zer0-secret-stream/src/lib.rsSecretStream— network/zer0-secret-stream/src/lib.rsSecretStreamMetrics— network/zer0-secret-stream/src/metrics.rsSecretStreamMetricsSnapshot— network/zer0-secret-stream/src/metrics.rsSecretTunables— network/zer0-secret-stream/src/config.rsHandshakeError— network/zer0-secret-stream/src/handshake.rsHandshakePattern— network/zer0-secret-stream/src/handshake.rs
Example shape
use zer0_secret_stream::{Bridge, SecretOptions, SecretStream};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Bridge wires two SecretStream halves together — useful for testing,
// proxying between transports, or stitching a relay session.
let (a, b) = tokio::io::duplex(8192);
let alice = SecretStream::new(a, true, SecretOptions::default())?;
let bob = SecretStream::new(b, false, SecretOptions::default())?;
let bridge = Bridge::new(alice, bob);
// Driving the bridge yields aggregate byte counters from both halves.
let stats = bridge.run().await?;
println!(
"bridge_a_to_b={} bytes bridge_b_to_a={} bytes",
stats.a_to_b_bytes, stats.b_to_a_bytes,
);
Ok(())
}