TlqError

Enum TlqError 

Source
pub enum TlqError {
    Connection(String),
    Timeout(u64),
    Server {
        status: u16,
        message: String,
    },
    Validation(String),
    Serialization(Error),
    Io(Error),
    MaxRetriesExceeded {
        max_retries: u32,
    },
    MessageTooLarge {
        size: usize,
    },
}
Expand description

Comprehensive error type for TLQ client operations.

This enum covers all possible error conditions that can occur when interacting with a TLQ server, including network issues, server errors, validation failures, and client-side problems. Errors are classified as either retryable or non-retryable using the is_retryable method.

§Error Categories

Retryable errors (transient issues that may succeed on retry):

  • Connection - Network connectivity problems
  • Timeout - Request timeouts
  • Io - I/O errors from the underlying transport

Non-retryable errors (permanent failures that won’t succeed on retry):

§Examples

use tlq_client::{TlqClient, TlqError};

#[tokio::main]
async fn main() {
    let client = TlqClient::new("localhost", 1337).unwrap();
     
    match client.add_message("test").await {
        Ok(message) => println!("Success: {}", message.id),
        Err(TlqError::MessageTooLarge { size }) => {
            println!("Message too large: {} bytes", size);
        },
        Err(TlqError::Connection(msg)) => {
            println!("Connection failed: {}", msg);
        },
        Err(e) => println!("Other error: {}", e),
    }
}

Variants§

§

Connection(String)

Network connection error

Indicates problems connecting to the TLQ server, such as connection refused, network unreachable, or DNS resolution failures.

§

Timeout(u64)

Request timeout error

The operation exceeded the configured timeout period. The timeout duration is specified in milliseconds.

§

Server

HTTP server error response

The TLQ server returned an HTTP error status code (4xx or 5xx). Includes both the status code and any error message from the server.

Fields

§status: u16
§message: String
§

Validation(String)

Request validation error

Invalid parameters were provided to a client method, such as empty message ID arrays or zero message counts.

§

Serialization(Error)

JSON serialization/deserialization error

Failed to parse JSON responses from the server or serialize request data to JSON.

§

Io(Error)

I/O error from underlying transport

Low-level I/O errors from TCP socket operations, such as connection reset, broken pipe, or permission denied.

§

MaxRetriesExceeded

Maximum retry attempts exceeded

The operation was retried the maximum number of times but still failed. The retry count is configurable via ConfigBuilder.

Fields

§max_retries: u32
§

MessageTooLarge

Message size exceeds the 64KB limit

TLQ enforces a maximum message size of 65,536 bytes (64KB). Messages larger than this limit are rejected.

Fields

§size: usize

Implementations§

Source§

impl TlqError

Source

pub fn is_retryable(&self) -> bool

Determines if this error type is retryable.

Returns true for transient errors that may succeed if retried:

Returns false for permanent errors that won’t succeed on retry:

This method is used internally by the retry mechanism to determine whether to attempt retrying a failed operation.

§Examples
use tlq_client::TlqError;

let timeout_error = TlqError::Timeout(5000);
assert!(timeout_error.is_retryable());

let validation_error = TlqError::Validation("Invalid input".to_string());
assert!(!validation_error.is_retryable());

Trait Implementations§

Source§

impl Debug for TlqError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for TlqError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for TlqError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<Error> for TlqError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for TlqError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.