ProtocolError

Enum ProtocolError 

Source
pub enum ProtocolError {
Show 18 variants InvalidSignature, NonceReused, TimestampOutdated, ContentNotFound(String), ChunkNotFound(u64), EncryptionError(String), DecryptionError(String), NetworkError(String), DatabaseError(String), ValidationError(String), PeerNotFound(String), InsufficientStorage, BandwidthLimitExceeded, RateLimitExceeded, InvalidProtocolVersion(String), ConnectionFailed(String), Timeout(String), Unauthorized(String),
}
Expand description

Protocol-level errors.

§Examples

use chie_shared::ProtocolError;

// Network error example
fn connect_to_peer(peer_id: &str) -> Result<(), ProtocolError> {
    if peer_id.is_empty() {
        return Err(ProtocolError::PeerNotFound("empty peer ID".to_string()));
    }
    Ok(())
}

// Content lookup error
fn get_content(cid: &str) -> Result<Vec<u8>, ProtocolError> {
    if cid.starts_with("Qm") {
        Ok(vec![1, 2, 3])
    } else {
        Err(ProtocolError::ContentNotFound(cid.to_string()))
    }
}

// Rate limiting
fn check_rate_limit(request_count: u32) -> Result<(), ProtocolError> {
    if request_count > 100 {
        Err(ProtocolError::RateLimitExceeded)
    } else {
        Ok(())
    }
}

assert!(connect_to_peer("12D3Koo").is_ok());
assert!(get_content("QmTest").is_ok());
assert!(check_rate_limit(50).is_ok());
assert!(check_rate_limit(150).is_err());

Variants§

§

InvalidSignature

§

NonceReused

§

TimestampOutdated

§

ContentNotFound(String)

§

ChunkNotFound(u64)

§

EncryptionError(String)

§

DecryptionError(String)

§

NetworkError(String)

§

DatabaseError(String)

§

ValidationError(String)

§

PeerNotFound(String)

§

InsufficientStorage

§

BandwidthLimitExceeded

§

RateLimitExceeded

§

InvalidProtocolVersion(String)

§

ConnectionFailed(String)

§

Timeout(String)

§

Unauthorized(String)

Trait Implementations§

Source§

impl Debug for ProtocolError

Source§

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

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

impl Display for ProtocolError

Source§

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

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

impl Error for ProtocolError

1.30.0 · 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<ValidationError> for ProtocolError

Source§

fn from(err: ValidationError) -> 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.