pub enum AnySubgroupReader {
Show 17 variants
Draft07(FramedRecvStream),
Draft08(FramedRecvStream),
Draft09(FramedRecvStream),
Draft10(FramedRecvStream),
Draft11(FramedRecvStream),
Draft12(FramedRecvStream),
Draft13(FramedRecvStream),
Draft14(FramedRecvStream),
Draft15(FramedRecvStream),
Draft16(FramedRecvStream),
Draft17(FramedRecvStream),
Draft18(FramedRecvStream),
Draft19(FramedRecvStream),
Draft20(FramedRecvStream),
Draft21(FramedRecvStream),
Draft22(FramedRecvStream),
Draft23(FramedRecvStream),
}Expand description
A subgroup stream the peer opened, that this endpoint is reading.
The mirror of AnySubgroupWriter, returned by
AnyConnection::accept_subgroup beside the header the peer framed it
with.
Variants§
Draft07(FramedRecvStream)
Draft-07’s subgroup stream.
Draft08(FramedRecvStream)
Draft-08’s subgroup stream.
Draft09(FramedRecvStream)
Draft-09’s subgroup stream.
Draft10(FramedRecvStream)
Draft-10’s subgroup stream.
Draft11(FramedRecvStream)
Draft-11’s subgroup stream.
Draft12(FramedRecvStream)
Draft-12’s subgroup stream.
Draft13(FramedRecvStream)
Draft-13’s subgroup stream.
Draft14(FramedRecvStream)
Draft-14’s subgroup stream.
Draft15(FramedRecvStream)
Draft-15’s subgroup stream.
Draft16(FramedRecvStream)
Draft-16’s subgroup stream.
Draft17(FramedRecvStream)
Draft-17’s subgroup stream.
Draft18(FramedRecvStream)
Draft-18’s subgroup stream.
Draft19(FramedRecvStream)
Draft-19’s subgroup stream.
Draft20(FramedRecvStream)
Draft-20’s subgroup stream.
Draft21(FramedRecvStream)
Draft-21’s subgroup stream.
Draft22(FramedRecvStream)
Draft-22’s subgroup stream.
Draft23(FramedRecvStream)
Draft-23’s subgroup stream.
Implementations§
Source§impl AnySubgroupReader
impl AnySubgroupReader
Sourcepub fn draft(&self) -> DraftVersion
pub fn draft(&self) -> DraftVersion
The draft framing this stream.
Sourcepub fn stream_id(&self) -> u64
pub fn stream_id(&self) -> u64
Which stream this subgroup arrived on, on the terms
AnySubgroupWriter::stream_id describes.
Sourcepub async fn read_object(&mut self) -> Result<AnyObject, AnyConnectionError>
pub async fn read_object(&mut self) -> Result<AnyObject, AnyConnectionError>
Read the next object on this subgroup.
§The stream’s end arrives as an error, not as None
A subgroup ends when its stream ends. Most per-draft readers cannot
tell that end from a truncation: both leave the reader wanting bytes
that never come, and both surface as ConnectionError::UnexpectedEnd.
Returning Option here would have to invent the distinction, and
inventing it means reporting a stream the peer cut off mid-object as a
subgroup that finished — which is exactly the case a caller most needs
to know about. A reader that can tell them apart reports the truncation
as an ErrorCause::PeerViolation.
So a caller that expects a known number of objects reads that many, and one that does not treats the error as the end and keeps whatever it read before it. Neither has to guess.