#[non_exhaustive]pub enum ClientError {
Show 23 variants
Resolve {
addr: String,
},
Socket(Error),
SocketOption {
operation: &'static str,
remote: SocketAddr,
source: Error,
},
ReadTimeoutRestore {
source: Error,
},
Protocol(ProtoError),
OpenTimeout,
OpenTimeoutTooSmall {
timeout: Duration,
minimum: Duration,
},
NoOpenTimeouts,
ServerRejected,
UnexpectedNoTestReply,
NonZeroNoTestToken {
token: u64,
},
ProtocolVersionMismatch {
requested: i64,
received: i64,
},
ZeroToken,
NegotiationRejected {
reason: String,
},
NotOpen,
AlreadyOpen,
AlreadyCompleted,
AlreadyClosed,
DurationOverflow,
CounterOverflow {
counter: &'static str,
},
PendingLimitExceeded {
limit: usize,
},
InvalidConfig {
reason: String,
},
WorkerPanicked,
}Expand description
Failure reported while configuring, opening, running, receiving, closing, or joining an IRTT client session.
Configuration validation errors usually require changing
ClientConfig or related options before retrying.
Network, protocol, and runtime errors may be transient, but can also reflect
peer incompatibility or an invalid session state.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Resolve
The configured server address could not be resolved to a socket address.
Check the host, port, address-family restrictions, and name service configuration before retrying.
Socket(Error)
A UDP socket operation failed while binding, connecting, sending, or receiving.
This can be a transient network or OS error, but may also reflect local permissions, routing, or socket configuration.
SocketOption
Applying or reading a socket option failed.
This is usually caused by an unsupported option, an invalid local value, or a platform-specific socket limitation. Changing socket configuration is more likely to help than retrying unchanged.
ReadTimeoutRestore
Restoring the configured read timeout after open negotiation failed.
The session may have opened successfully, but the socket could not be returned to the caller’s requested receive-timeout behavior.
Protocol(ProtoError)
A packet failed IRTT protocol parsing or authentication.
Likely causes include malformed input, unsupported protocol data, or an HMAC mismatch between client and server.
OpenTimeout
No valid open reply was received before all configured open attempts timed out.
Retrying can succeed when the server or network is temporarily unavailable. Persistent failures usually require changing the address, authentication key, server configuration, or timeout settings.
OpenTimeoutTooSmall
An open-attempt timeout is below the client’s supported minimum.
Increase the configured timeout before retrying.
NoOpenTimeouts
The configured open-attempt timeout list is empty.
Provide at least one timeout before opening the session.
ServerRejected
The server explicitly rejected the open request.
Retrying unchanged is unlikely to help unless the server configuration or load has changed.
UnexpectedNoTestReply
A no-test open request received a reply that did not have no-test close semantics.
This indicates an incompatible or unexpected peer response.
NonZeroNoTestToken
A no-test open reply included a connection token.
No-test negotiation must not establish a probe session, so a non-zero token indicates an incompatible or unexpected peer response.
ProtocolVersionMismatch
The peer replied with a protocol version different from the requested version.
This is a protocol compatibility error and requires compatible client and server versions.
ZeroToken
The server returned a zero connection token for a normal test session.
A normal session requires a non-zero token to correlate echo traffic, so this indicates an invalid peer response.
NegotiationRejected
Negotiated parameters were rejected by the configured negotiation policy.
Use a less restrictive configuration or
NegotiationPolicy::Loose when the
caller accepts documented server restrictions.
NotOpen
The requested operation requires an open session, but the client is only connected.
AlreadyOpen
The session is already open.
Continue running, receiving, or closing the existing session instead of opening it again.
AlreadyCompleted
The no-test session has already completed.
Create a new client session to perform another negotiation.
AlreadyClosed
The session is already closed.
Create a new client session before opening or running another test.
DurationOverflow
A duration could not be represented as nanoseconds for scheduling or protocol encoding.
Use smaller configured or negotiated durations.
CounterOverflow
A client-maintained counter would overflow.
This is a runtime limit rather than a network failure. Start a new session if the test duration or send volume reaches this limit.
PendingLimitExceeded
Sending another probe would exceed the configured pending-probe limit.
Increase ClientConfig::max_pending_probes,
reduce send rate, or receive replies and timeouts more often before
sending again.
InvalidConfig
Client configuration failed validation before the requested operation.
The reported reason names a value that must be changed before retrying.
WorkerPanicked
A managed-session worker thread panicked before producing an outcome.
This is a runtime failure from joining the managed session, not a protocol response from the server.
Trait Implementations§
Source§impl Debug for ClientError
impl Debug for ClientError
Source§impl Display for ClientError
impl Display for ClientError
Source§impl Error for ClientError
impl Error for ClientError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()