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
impl AnyControlMessage
Sourcepub fn decode(
version: DraftVersion,
buf: &mut impl Buf,
) -> Result<Self, CodecError>
pub fn decode( version: DraftVersion, buf: &mut impl Buf, ) -> Result<Self, CodecError>
Decode from wire using the specified draft version.
Sourcepub fn encode(&self, buf: &mut impl BufMut) -> Result<(), CodecError>
pub fn encode(&self, buf: &mut impl BufMut) -> Result<(), CodecError>
Encode to wire using the appropriate draft’s format.
Sourcepub fn draft(&self) -> DraftVersion
pub fn draft(&self) -> DraftVersion
Returns the draft version this value belongs to.
Source§impl AnyControlMessage
impl AnyControlMessage
Sourcepub fn fetch_group_order(&self) -> Option<(u64, AnyFetchGroupOrder)>
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
impl Clone for AnyControlMessage
Source§fn clone(&self) -> AnyControlMessage
fn clone(&self) -> AnyControlMessage
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more