#[non_exhaustive]pub enum MatchKind {
Subgroup,
Fetch,
Datagram,
}Expand description
What a Matcher can be aimed at.
Datagram exists so that aiming a rule at datagrams produces a report
rather than silence; datagrams are not shapeable in this release, so a
Datagram matcher never matches a unit. The report is the scheduler’s
job once this module is wired.
Fetch is live on all thirteen. It was not always: drafts 18 and 19
write a fetch object’s Group ID as a difference whose sign the fetch’s
Group Order settles, and while nothing carried that order to the framer a
fetch stream there was bypassed at its header and produced no
ObjectMeta for a rule to see. The session reads the order off the
FETCH now — capability::fetch_group_order_is_needed — so what is left is
one stream at a time rather than a whole draft, and a stream the session
cannot resolve says so itself as
Impairment { FramerBypass { FetchGroupOrderUnknown } }.
Being matchable is not being mutable, and the two are answered
separately: whether a rule claims a unit is Matcher::matches, and what
may then be done to it is capability::classify.
#[non_exhaustive] with no Default: there is no meaningful default
stream kind, and a wrong one would silently narrow every rule that
omitted the key.
Written as "subgroup", "fetch" or "datagram".