Skip to main content

SessionErrorCode

Enum SessionErrorCode 

Source
#[repr(u64)]
pub enum SessionErrorCode { NoError = 0, InternalError = 1, Unauthorized = 2, ProtocolViolation = 3, DuplicateTrackAlias = 4, ParameterLengthMismatch = 5, TooManySubscribes = 6, GoawayTimeout = 16, }
Expand description

Session termination codes, from draft-07 section 3.5 “Termination” (Table 1).

The draft introduces the table with: “The application MAY use any error message and SHOULD use a relevant code, as defined below”. These are the codes carried in the QUIC CONNECTION_CLOSE frame or the WebTransport CLOSE_WEBTRANSPORT_SESSION capsule.

Section 3.5 continues past the table with a list defining the codes. That list has seven entries for eight rows: it skips Parameter Length Mismatch, whose rule appears in section 6.1 instead. Each variant below gives the Reason text followed by that definition.

The jump from 0x6 to 0x10 is the draft’s own; 0x7 through 0xF are unassigned.

Variants§

§

NoError = 0

No Error — the session is being terminated without an error.

§

InternalError = 1

Internal Error — an implementation specific error occurred.

§

Unauthorized = 2

Unauthorized — the endpoint breached an agreement, which may have been pre-negotiated by the application.

§

ProtocolViolation = 3

Protocol Violation — the remote endpoint performed an action that was disallowed by the specification.

§

DuplicateTrackAlias = 4

Duplicate Track Alias — the endpoint attempted to use a Track Alias that was already in use.

§

ParameterLengthMismatch = 5

Parameter Length Mismatch — the one code section 3.5 lists in its table but omits from the definitions that follow it. Section 6.1 supplies the rule: if a receiver understands a parameter type and the parameter length implied by that type does not match the Parameter Length field, the receiver must terminate the session with this code.

§

TooManySubscribes = 6

Too Many Subscribes — the session was closed because the subscriber used a Subscribe ID equal or larger than the current Maximum Subscribe ID. Section 6.20 states the same rule from the publisher’s side, for any message carrying such a Subscribe ID rather than SUBSCRIBE alone.

§

GoawayTimeout = 16

GOAWAY Timeout — the session was closed because the client took too long to close the session in response to a GOAWAY message (section 6.3). See session migration, section 3.6.

Implementations§

Source§

impl SessionErrorCode

Source

pub const ALL: &[SessionErrorCode]

Every session termination code draft-07 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.

Source

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

Convert a raw u64 to a SessionErrorCode, if draft-07 defines it.

Returns None for any code the draft does not assign; peers are free to send codes from later drafts or from private extensions.

Source

pub fn as_u64(self) -> u64

Return the raw u64 value of this error code.

Trait Implementations§

Source§

impl Clone for SessionErrorCode

Source§

fn clone(&self) -> SessionErrorCode

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 SessionErrorCode

Source§

impl Debug for SessionErrorCode

Source§

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

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

impl Eq for SessionErrorCode

Source§

impl PartialEq for SessionErrorCode

Source§

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

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.