#[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 — 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
impl RequestErrorCode
Sourcepub const ALL: &[RequestErrorCode]
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.
Trait Implementations§
Source§impl Clone for RequestErrorCode
impl Clone for RequestErrorCode
Source§fn clone(&self) -> RequestErrorCode
fn clone(&self) -> RequestErrorCode
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more