Skip to main content

AnyControlMessage

Enum AnyControlMessage 

Source
pub enum AnyControlMessage {
Show 13 variants Draft07(ControlMessage), Draft08(ControlMessage), Draft09(ControlMessage), Draft10(ControlMessage), Draft11(ControlMessage), Draft12(ControlMessage), Draft13(ControlMessage), Draft14(ControlMessage), Draft15(ControlMessage), Draft16(ControlMessage), Draft17(ControlMessage), Draft18(ControlMessage), Draft19(ControlMessage),
}
Expand description

A control message from any enabled draft.

Variants§

§

Draft07(ControlMessage)

Draft-draft07 variant.

§

Draft08(ControlMessage)

Draft-draft08 variant.

§

Draft09(ControlMessage)

Draft-draft09 variant.

§

Draft10(ControlMessage)

Draft-draft10 variant.

§

Draft11(ControlMessage)

Draft-draft11 variant.

§

Draft12(ControlMessage)

Draft-draft12 variant.

§

Draft13(ControlMessage)

Draft-draft13 variant.

§

Draft14(ControlMessage)

Draft-draft14 variant.

§

Draft15(ControlMessage)

Draft-draft15 variant.

§

Draft16(ControlMessage)

Draft-draft16 variant.

§

Draft17(ControlMessage)

Draft-draft17 variant.

§

Draft18(ControlMessage)

Draft-draft18 variant.

§

Draft19(ControlMessage)

Draft-draft19 variant.

Implementations§

Source§

impl AnyControlMessage

Source

pub fn decode( version: DraftVersion, buf: &mut impl Buf, ) -> Result<Self, CodecError>

Decode from wire using the specified draft version.

Source

pub fn encode(&self, buf: &mut impl BufMut) -> Result<(), CodecError>

Encode to wire using the appropriate draft’s format.

Source

pub fn draft(&self) -> DraftVersion

Returns the draft version this value belongs to.

Source§

impl AnyControlMessage

Source

pub fn is_setup(&self) -> bool

Returns true if this is a CLIENT_SETUP or SERVER_SETUP message.

Source

pub fn fetch_group_order(&self) -> Option<(u64, AnyFetchGroupOrder)>

The Request ID and Group Order of a FETCH, on the drafts where the FETCH settles the order by itself.

A fetch response’s Objects arrive in the order the request asked for. Draft-19 Section 10.12.3: “The publisher responding to a FETCH is responsible for delivering all available Objects in the requested range in the requested order (see Section 10.2.8).” Draft-19 Section 10.2.8 carries the order itself, as the GROUP_ORDER parameter, and states what its absence means: “If omitted from FETCH, the receiver uses Ascending (0x1).” So on those drafts one message answers the question outright, whether or not it carries the parameter, and that is what this returns.

The answer matters most on drafts 18 and 19, whose fetch Objects write a Group ID as a difference from the Object before and leave the order to decide its sign — see AnyFetchObjectReader::new. Drafts 15, 16 and 17 state the same rule about the same parameter and their fetch streams resolve without it, so this answers for them too rather than for the two that happen to need it.

§What answers None

Any message that is not a FETCH, and every FETCH on drafts 07-14. Those drafts carry Group Order as a field of the FETCH rather than as a parameter, and its value 0x0 means the subscriber expressed no preference — which leaves the order to the publisher, who states it in the FETCH_OK. That is a two-message negotiation, and a function handed one message cannot answer it. Answering Ascending there would be a guess wearing the same return type as a fact.

Also None for a GROUP_ORDER value that is neither Ascending (0x1) nor Descending (0x2), which drafts 15-19 make a session-closing PROTOCOL_VIOLATION and this crate’s decoder refuses before building a message. Defensive, and deliberately not the Ascending default: an out-of-range value is not an omitted one.

Trait Implementations§

Source§

impl Clone for AnyControlMessage

Source§

fn clone(&self) -> AnyControlMessage

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 Debug for AnyControlMessage

Source§

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

Formats the value using the given formatter. Read more

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.