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, Uninterested = 32, PrefixOverlap = 48, NamespaceTooLarge = 49, UnsupportedExtension = 51, Redirect = 52, ConflictingFilters = 53, InvalidFilter = 54,
}
Expand description

REQUEST_ERROR codes (draft-20 Section 15.11.2).

0x32 is unassigned. Draft-19 gave it to INVALID_JOINING_REQUEST_ID, which answered a Joining FETCH; draft-20 deleted the joining mechanism along with the Fetch Type field it travelled in.

Section 10.6 states that REQUEST_ERROR is sent in response to any request: SUBSCRIBE, FETCH, PUBLISH, SUBSCRIBE_NAMESPACE, SUBSCRIBE_TRACKS, PUBLISH_NAMESPACE, TRACK_STATUS and REQUEST_UPDATE. The per-code definitions are in Section 10.6.2, which the registry table cites as Section 10.6.

Note that the shorter list naming only the first seven of those messages belongs to the REDIRECT code specifically, not to the registry as a whole.

The registry also reserves the code points 0x7f * N + 0x9D for greasing (draft-20 Section 14). That is a range rather than an assignment, so it has no variant here and from_u64 reports it as unknown.

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

§

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.

§

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, PUBLISH_NAMESPACE, SUBSCRIBE_NAMESPACE, and SUBSCRIBE_TRACKS. 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.

§

ConflictingFilters = 53

CONFLICTING_FILTERS — In response to SUBSCRIBE_TRACKS, the filter parameters conflict among too many subscribers to aggregate the subscription upstream or otherwise efficiently service it.

§

InvalidFilter = 54

INVALID_FILTER — A filter parameter is invalid.

Implementations§

Source§

impl RequestErrorCode

Source

pub const ALL: &[RequestErrorCode]

Every Request Error Code draft-20 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 the draft assigns that code point.

Returns None for any unassigned value, including the greasing range, so that a peer sending a code this draft does not define cannot break decoding.

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

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.