Skip to main content

Capabilities

Struct Capabilities 

Source
pub struct Capabilities { /* private fields */ }
Expand description

What a draft can express, queryable before a run.

Implementations§

Source§

impl Capabilities

Source

pub fn for_draft(draft: DraftVersion) -> Self

The capability table for a draft.

Source

pub fn supports(&self, site: Site, kind: ActionKind) -> Support

Whether kind is available at site, with no per-unit facts.

At Site::Object this is the subgroup-stream column; Self::supports_on answers for a named stream kind.

Source

pub fn supports_on( &self, site: Site, kind: ActionKind, stream_kind: DataStreamType, ) -> Support

Whether kind is available at site for a given stream kind.

Source

pub fn supports_matcher(&self, kind: MatchKind, field: MatcherKey) -> bool

Whether a shaping rule keyed on field can ever claim a unit arriving as kind. supports_matcher, bound to this draft.

Source

pub fn admit_class( &self, class: &ClassRule, ) -> Result<(), UnsupportedMatcherKey>

Admit one class rule, or refuse it naming the draft and the key.

The first key the rule names that supports_matcher answers false for is the refusal, in the order the keys are declared on Matcher — the same first-match convention ShapeProfile::try_new uses for ShapeError::InertMatcher, so a rule with two dead keys reports the one an author reading their own configuration top to bottom reaches first.

§A rule that names no stream kind is judged against both

Matcher::stream_kind is optional, and a rule that omits it claims units of any kind. Such a rule is refused only when its key is carried by none of them, because refusing it for being dead on fetch alone would reject a rule that shapes subgroup traffic perfectly well — and a false rejection here is worse than the silence this exists to end, since it rejects a configuration that works.

Source

pub fn admit_profile( &self, profile: &ShapeProfile, ) -> Result<(), UnsupportedMatcherKey>

Admit every class in a profile, or refuse at the first dead key.

The pre-run check ShapeProfile::try_new cannot make: that constructor validates the configuration alone and has no draft, so a rule keyed on something the negotiated draft does not carry is valid to it. This is the same question asked once a draft is known.

§A session asks it twice, and the second time is not redundant

Once before it dials, against the draft it is about to frame with, which is the only moment a profile can be refused with nothing yet forwarded. And once more when the peers name a draft, which drafts 07 to 14 do in their SETUP rather than in the ALPN they share — so for that cohort the first answer was given about a configured guess and the second is given about the session actually running. The two differ only where a draft this build did not compile is involved, and that is exactly the case where every rule in the profile is dead.

Trait Implementations§

Source§

impl Clone for Capabilities

Source§

fn clone(&self) -> Capabilities

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 Copy for Capabilities

Source§

impl Debug for Capabilities

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more