Skip to main content

ProtocolError

Enum ProtocolError 

Source
#[non_exhaustive]
pub enum ProtocolError { InvalidMultibulkLength, InvalidBulkLength, ExpectedDollar(u8), TooBigMbulkCount, TooBigBulkCount, TooBigInline, UnbalancedQuotes, UnknownType(u8), TooDeep, Unsupported(u8), }
Expand description

A frame the codec will not accept.

This is a value rather than a string because the connection has to do two things with it: write the Redis text to the client, and close the connection, which is what Redis does after any protocol error.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

InvalidMultibulkLength

The * count was not an integer, was negative past what Redis allows, or was larger than the multibulk limit.

§

InvalidBulkLength

The $ length was not an integer, was negative, or was larger than the bulk limit.

§

ExpectedDollar(u8)

An argument did not begin with $. Carries the byte that was there instead, because that byte is in the message Redis sends.

§

TooBigMbulkCount

The * count line has not ended and there is already more pending than an inline request is allowed to be.

§

TooBigBulkCount

The $ length line has not ended and there is already more pending than an inline request is allowed to be.

§

TooBigInline

An inline request has no newline and has passed the inline limit.

§

UnbalancedQuotes

An inline request opened a quote it never closed.

§

UnknownType(u8)

A reply began with a byte that is not a type in either protocol. Carries the byte.

§

TooDeep

A reply nested deeper than the configured limit. This is only reachable from the reply decoder, which is the one part of the codec that recurses.

§

Unsupported(u8)

A frame this build does not decode, currently the streamed aggregates and streamed strings. Carries the type byte.

Implementations§

Source§

impl ProtocolError

Source

pub fn write_reply(&self, out: &mut Vec<u8>)

Appends the error line the client should see, - and CRLF included.

Written straight into the output buffer rather than returned as a String, because the failure path runs on a shard thread too and a shard thread that allocates aborts.

Trait Implementations§

Source§

impl Clone for ProtocolError

Source§

fn clone(&self) -> ProtocolError

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for ProtocolError

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, f: &mut Formatter<'_>) -> Result

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

impl Eq for ProtocolError

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<ProtocolError> for Error

Source§

fn from(e: ProtocolError) -> Error

A protocol error reaching the typed API is an invalid argument, because on that side of the boundary the caller handed us the bytes.

Source§

impl PartialEq for ProtocolError

Source§

fn eq(&self, other: &ProtocolError) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ProtocolError

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<E> ExternalError for E
where E: Into<Box<dyn Error>>,

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> MaybeSend for T

Source§

impl<T> MaybeSync for T

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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 = !

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

fn try_from(value: U) -> Result<T, !>

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.