Skip to main content

RequestErrorCode

Enum RequestErrorCode 

Source
#[repr(u64)]
pub enum RequestErrorCode {
Show 18 variants InternalError = 0, Unauthorized = 1, Timeout = 2, NotSupported = 3, MalformedAuthToken = 4, ExpiredAuthToken = 5, GoingAway = 6, ExcessiveLoad = 9, DoesNotExist = 16, InvalidRange = 17, MalformedTrack = 18, DuplicateSubscription = 25, Uninterested = 32, PrefixOverlap = 48, NamespaceTooLarge = 49, InvalidJoiningRequestId = 50, UnsupportedExtension = 51, Redirect = 52,
}
Expand description

REQUEST_ERROR Codes (draft-18 Section 15.10.2).

These are the codes carried in the Error Code field of a REQUEST_ERROR message rejecting a request. The registry’s Specification column points at Section 10.6, which is a one-sentence introduction; the per-code definitions are one level down, in Section 10.6.2 (REQUEST_ERROR Message Format).

One code changes the shape of the message: a REQUEST_ERROR carries a trailing Redirect structure only when the Error Code is REDIRECT (0x34).

The range 0x7f * N + 0x9D is reserved for greasing and has no variant.

Variants§

§

InternalError = 0

INTERNAL_ERROR — An implementation specific or generic error occurred.

§

Unauthorized = 1

UNAUTHORIZED — The subscriber is not authorized to perform the requested action on the given track. This might be retryable if the authorization token is not yet valid.

§

Timeout = 2

TIMEOUT — The subscription could not be completed before an implementation specific timeout. For example, a relay could not establish an upstream subscription within the timeout.

§

NotSupported = 3

NOT_SUPPORTED — The endpoint does not support the type of request.

§

MalformedAuthToken = 4

MALFORMED_AUTH_TOKEN — Invalid Auth Token serialization during registration (see Section 10.2.2).

§

ExpiredAuthToken = 5

EXPIRED_AUTH_TOKEN — Authorization token has expired (Section 10.2.2).

§

GoingAway = 6

GOING_AWAY — The endpoint has received a GOAWAY and MAY reject new requests.

§

ExcessiveLoad = 9

EXCESSIVE_LOAD — The responder is overloaded and cannot process the request at this time. The sender SHOULD use the Retry Interval to indicate when the request can be retried.

§

DoesNotExist = 16

DOES_NOT_EXIST — The track or namespace is not available at the publisher.

§

InvalidRange = 17

INVALID_RANGE — In response to SUBSCRIBE or FETCH, specified Filter or range of Locations cannot be satisfied.

§

MalformedTrack = 18

MALFORMED_TRACK — In response to a FETCH, a relay publisher detected the track was malformed (see Section 2.4.2).

§

DuplicateSubscription = 25

DUPLICATE_SUBSCRIPTION — The PUBLISH or SUBSCRIBE request attempted to create a subscription to a Track with the same role as an existing subscription.

§

Uninterested = 32

UNINTERESTED — The subscriber is not interested in the track or namespace.

§

PrefixOverlap = 48

PREFIX_OVERLAP — In response to SUBSCRIBE_NAMESPACE or SUBSCRIBE_TRACKS, the namespace prefix shares a common prefix with another subscription of the same type in the same session. SUBSCRIBE_NAMESPACE and SUBSCRIBE_TRACKS have independent overlap spaces, so a SUBSCRIBE_NAMESPACE and a SUBSCRIBE_TRACKS may share the same prefix.

§

NamespaceTooLarge = 49

NAMESPACE_TOO_LARGE — In response to SUBSCRIBE_NAMESPACE or SUBSCRIBE_TRACKS, the namespace prefix matches more publishers than the relay is willing to enumerate.

§

InvalidJoiningRequestId = 50

INVALID_JOINING_REQUEST_ID — In response to a Joining FETCH, the referenced Request ID is not an Established Subscription.

§

UnsupportedExtension = 51

UNSUPPORTED_EXTENSION — The track contains a Mandatory Track Property (see Section 2.5.1) that the endpoint does not understand.

§

Redirect = 52

REDIRECT — The request cannot be fulfilled by this endpoint, but could succeed at the location specified in the Redirect structure. The requester SHOULD establish a new session to the provided URI (if present) and retry the request using the Full Track Name from the Redirect (if present). This error code can appear in response to SUBSCRIBE, FETCH, TRACK_STATUS, PUBLISH_NAMESPACE and SUBSCRIBE_NAMESPACE. Relays are not required to follow redirects from upstream and MAY forward a REDIRECT response to matching downstream requests. A relay MAY cache a REDIRECT response for a Full Track Name for up to Retry Interval milliseconds and use it to respond to subsequent matching requests without forwarding them upstream.

Implementations§

Source§

impl RequestErrorCode

Source

pub const ALL: &[RequestErrorCode]

Every Request Error Code draft-18 assigns, in ascending wire order.

This is the set Self::from_u64 accepts, written out so that it can be enumerated: nothing can iterate an enum’s variants, so a caller that wants the registry has to be handed it. Writing it down is also what lets a test state its claims about the registry itself rather than about the range some sweep happens to reach — that this is the set from_u64 answers to, and that none of it lands in the range the draft reserves for greasing.

Source

pub fn from_u64(v: u64) -> Option<Self>

Convert a raw u64 to a RequestErrorCode, if valid.

Source

pub fn as_u64(self) -> u64

Return the raw u64 value of this error code.

Trait Implementations§

Source§

impl Clone for RequestErrorCode

Source§

fn clone(&self) -> RequestErrorCode

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 RequestErrorCode

Source§

impl Debug for RequestErrorCode

Source§

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

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

impl Eq for RequestErrorCode

Source§

impl PartialEq for RequestErrorCode

Source§

fn eq(&self, other: &RequestErrorCode) -> 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 RequestErrorCode

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<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> 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, 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, <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.