Struct Setup

Source
pub struct Setup {
    pub version: Version,
    pub keepalive: u32,
    pub max_lifetime: u32,
    pub resume_identification_token: Bytes,
    pub metadata_mime_type: Bytes,
    pub data_mime_type: Bytes,
    pub metadata: BytesMut,
    pub data: BytesMut,
    /* private fields */
}
Expand description

SETUP Frame (0x01)

Setup frames MUST always use Stream ID 0 as they pertain to the connection.

The SETUP frame is sent by the client to inform the server of the parameters under which it desires to operate. The usage and message sequence used is shown in Connection Establishment.

One of the important parameters for a connection is the format, layout, and any schema of the data and metadata for frames. This is, for lack of a better term, referred to here as “MIME Type”. An implementation MAY use typical MIME type values or MAY decide to use specific non-MIME type values to indicate format, layout, and any schema for data and metadata. The protocol implementation MUST NOT interpret the MIME type itself. This is an application concern only.

The encoding format for Data and Metadata are included separately in the SETUP.

§Frame Contents

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Stream ID = 0                         |
+-----------+-+-+-+-+-----------+-------------------------------+
|Frame Type |0|M|R|L|  Flags    |
+-----------+-+-+-+-+-----------+-------------------------------+
|         Major Version         |        Minor Version          |
+-------------------------------+-------------------------------+
|0|                 Time Between KEEPALIVE Frames               |
+---------------------------------------------------------------+
|0|                       Max Lifetime                          |
+---------------------------------------------------------------+
|         Token Length          | Resume Identification Token  ...
+---------------+-----------------------------------------------+
|  MIME Length  |   Metadata Encoding MIME Type                ...
+---------------+-----------------------------------------------+
|  MIME Length  |     Data Encoding MIME Type                  ...
+---------------+-----------------------------------------------+
                      Metadata & Setup Payload

§Note

A server that receives a Setup frame that has FrameFlags::RESUME Enabled set, but does not support resuming operation, MUST reject the SETUP with an ErrorCode::RejectedSetup

Fields§

§version: Version§keepalive: u32

Unsigned 31-bit integer of Time (in milliseconds) between KEEPALIVE frames that the client will send. Value MUST be > 0.

  • For server-to-server connections, a reasonable time interval between client KEEPALIVE frames is 500ms.
  • For mobile-to-server connections, the time interval between client KEEPALIVE frames is often > 30,000ms.
§max_lifetime: u32

Unsigned 31-bit integer of Time (in milliseconds) that a client will allow a server to not respond to a KEEPALIVE before it is assumed to be dead. Value MUST be > 0.

§resume_identification_token: Bytes

Token used for client resume identification (Not present if R flag is not set).

§metadata_mime_type: Bytes

MIME Type for encoding of Metadata.

This SHOULD be a US-ASCII string that includes the Internet media type specified in RFC 2045. Many are registered with IANA such as CBOR. Suffix rules MAY be used for handling layout.

For example, application/x.netflix+cbor or application/x.reactivesocket+cbor or application/x.netflix+json.

The string MUST NOT be null terminated.

§data_mime_type: Bytes

MIME Type for encoding of Data.

This SHOULD be a US-ASCII string that includes the Internet media type specified in RFC 2045. Many are registered with IANA such as CBOR. Suffix rules MAY be used for handling layout.

For example, application/x.netflix+cbor or application/x.reactivesocket+cbor or application/x.netflix+json.

The string MUST NOT be null terminated.

§metadata: BytesMut

Setup Metadata

Includes payload describing connection capabilities of the endpoint sending the Setup header.

§data: BytesMut

Setup Data

Includes payload describing connection capabilities of the endpoint sending the Setup header.

Implementations§

Source§

impl Setup

Source

pub fn set_resume_identification_token( &mut self, resume_identification_token: Bytes, )

Sets the value of Setup.resume_identification_token

Source

pub fn set_metadata(&mut self, metadata: BytesMut)

Sets the value of Setup.metadata

Source

pub const fn builder() -> SetupBuilder

Creates a builder to builder a frame of this type.

Trait Implementations§

Source§

impl Clone for Setup

Source§

fn clone(&self) -> Setup

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Setup

Source§

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

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

impl Decoder for Setup

Source§

type Error = Error

The type of error that can occur if decoding fails.
Source§

fn decode(__buf: &mut BytesMut) -> Result<Self, Self::Error>

Decodes a value from the given buffer. Read more
Source§

fn has_enough_bytes(_buf: &BytesMut) -> bool

Returns true if the given buffer can be decoded. Read more
Source§

impl Encoder for Setup

Source§

type Error = Error

The type of error that can occur if encoding fails.
Source§

fn encode(input: &Self, __buf: &mut BytesMut) -> Result<(), Self::Error>

Encodes the given input into the output buffer. Read more
Source§

fn size_of(input: &Self) -> usize

Returns the number of bytes required to encode the given input. Read more
Source§

impl FrameVariant for Setup

Source§

const FLAGS_MASK: FrameFlags

Mask that flags of a variant must be in.
Source§

fn flags(&self) -> FrameFlags

Gets the flags of the variant.
Source§

const REQUIRED_FLAGS: FrameFlags = _

Flags that must be set for a variant.
Source§

impl From<Setup> for Frame

Source§

fn from(value: Setup) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl !Freeze for Setup

§

impl RefUnwindSafe for Setup

§

impl Send for Setup

§

impl Sync for Setup

§

impl Unpin for Setup

§

impl UnwindSafe for Setup

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> EncoderExt for T
where T: Encoder,

Source§

fn encode_to(&self, buf: &mut BytesMut) -> Result<(), Self::Error>

Encodes self into buf. Read more
Source§

fn size(&self) -> usize

Returns the number of bytes required to encode self.
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 = Infallible

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.