Rust CI / cargo fmt (push) Successful in 16s
Rust CI / cargo check (x86_64-unknown-linux-gnu) (push) Successful in 31s
Rust CI / cargo clippy (push) Successful in 33s
Rust CI / cargo test (x86_64-unknown-linux-gnu) (push) Failing after 33s
Rust CI / cargo check (x86_64-unknown-linux-musl) (push) Failing after 9s
Rust CI / cargo test (x86_64-unknown-linux-musl) (push) Failing after 7s
Rust CI / cargo doc (push) Successful in 26s
Fuzz Smoke / cargo fuzz smoke (push) Failing after 33s
Supply chain / cargo-deny advisories (push) Successful in 9s
Supply chain / cargo-deny bans licenses sources (push) Successful in 7s
Supply chain / actionlint (push) Successful in 3s
Netem Interop / netem interop (push) Successful in 1m4s
45 lines
1.8 KiB
Markdown
45 lines
1.8 KiB
Markdown
# irtt-client
|
|
|
|
Reusable client/session library for IRTT-compatible round-trip-time probing:
|
|
socket lifecycle, open negotiation, probe send/receive, loss/duplicate/late
|
|
classification, and a typed event stream.
|
|
|
|
## Looking for the CLI?
|
|
|
|
If you just want to run probes from the command line, use the
|
|
[`irtt-rs`](https://crates.io/crates/irtt-rs) application package instead,
|
|
which installs the `irtt-client` binary. This crate is the library the
|
|
binaries are built on.
|
|
|
|
## API tiers
|
|
|
|
- `Client` — runtime-free blocking adapter. No Tokio dependency; this is the
|
|
default build.
|
|
- `AsyncClient` (feature `tokio`) — low-level Tokio adapter for callers that
|
|
own a runtime and drive readiness directly.
|
|
- `managed` (feature `tokio`) — a unified managed driver: `ManagedClientTask`
|
|
/ `ManagedClientHandle` for multi-target orchestration under a Tokio
|
|
runtime, and `BlockingManagedClient` for synchronous callers, which owns its
|
|
own dedicated current-thread runtime.
|
|
|
|
`Client` and `AsyncClient` send one probe whenever called. They expose the
|
|
negotiated parameters, pending-probe status, and timeout deadlines; callers
|
|
own cadence and run duration. The managed driver provides fixed cadence,
|
|
missed-slot handling, finite runs, and staggered or burst pacing. Low-level
|
|
`EchoSent` events leave `scheduled_at` and `timer_error` absent; the managed
|
|
driver supplies those schedule measurements.
|
|
|
|
Tokio stays optional: the default build has no runtime and no Tokio
|
|
dependency at all.
|
|
|
|
See `examples/` in the repository for runnable examples of each tier.
|
|
|
|
## Documentation
|
|
|
|
Full API documentation is on [docs.rs/irtt-client](https://docs.rs/irtt-client).
|
|
|
|
## Project
|
|
|
|
Part of [irtt-rs](https://github.com/Lochnair/irtt-rs), an independent Rust
|
|
implementation of an IRTT-compatible protocol stack.
|