Skip to main content

Crate irtt_client

Crate irtt_client 

Source
Expand description

Reusable client/session/event layer for IRTT-compatible probes.

irtt-client opens IRTT-compatible sessions, sends echo probes, receives replies, classifies loss/late/duplicate packets, and emits ClientEvent values for callers to consume directly or aggregate with irtt-stats. With the tokio feature enabled, AsyncClient provides the same low-level lifecycle for callers that own a Tokio runtime and drive readiness directly.

Timing values intentionally preserve signed measurement semantics. When server timing is available, RttSample::effective is adjusted for server processing and can be negative if the reported server processing time exceeds the raw client-observed RTT. Directional OneWayDelaySample values are also signed when the required wall-clock timestamps are available; negative values usually indicate client/server clock skew.

Client is the runtime-free low-level blocking adapter and requires no Tokio dependency at all; it is what a caller without a runtime, or that wants full control over its own event loop, should start from. With the tokio feature, AsyncClient provides the corresponding low-level Tokio adapter for a caller that owns a runtime and drives socket readiness itself. managed sits above both: ManagedClientTask / ManagedClientHandle (tokio feature) run and control one or more targets under a Tokio runtime, and BlockingManagedClient (tokio feature) wraps that in a synchronous owner backed by its own dedicated current-thread runtime for callers that want managed multi-target behavior without touching Tokio themselves.

See examples/ in the repository for a runnable example of each tier.

Modules§

managed

Structs§

AsyncClient
Low-level Tokio IRTT client for one connected UDP target.
Client
Low-level synchronous IRTT client.
ClientAuthConfig
Authentication settings used by client sessions.
ClientConfig
Configuration for opening and running an IRTT client session.
ClientTimestamp
Client-side timestamp captured in both wall-clock and monotonic time.
NegotiatedParams
Protocol parameters accepted for a session.
OneWayDelaySample
Directional one-way delay samples computed from wall-clock timestamps.
PacketMeta
Receive-side packet metadata observed outside the IRTT wire protocol.
ReceivedStatsSample
Server-reported receive counters decoded from an echo reply.
RecvBudget
Bound for a single receive-drain operation.
RttSample
Round-trip timing for one echo reply.
ServerTiming
Server-reported timing fields decoded from an echo reply.
SignedDuration
Signed nanosecond-backed duration used for derived timing values.
SocketConfig
Local UDP socket options used by ClientConfig.

Enums§

ClientError
Failure reported while configuring, opening, running, receiving, closing, or joining an IRTT client session.
ClientEvent
Event emitted by an IRTT client session.
NegotiationPolicy
How strictly to handle server-side negotiation restrictions.
NegotiationRestriction
A server-side restriction applied during session parameter negotiation.
OpenOutcome
Result of the IRTT open exchange.
RunMode
Mode requested during the IRTT open exchange.
WarningKind
Category for a non-fatal ClientEvent::Warning.

Constants§

MAX_DSCP_CODEPOINT
Largest valid DSCP codepoint accepted by client configuration.
MAX_SERVER_FILL_BYTES
Protocol compatibility bound for a requested server_fill value, in UTF-8 bytes.
MAX_TTL
Largest IPv4 TTL or IPv6 hop-limit value accepted by client configuration.
MAX_UDP_PAYLOAD_LENGTH
Largest UDP payload length accepted by client configuration, in bytes.