pub(crate) enum GapRules {
Draft11To13,
Draft14To15,
Draft16To17,
Draft18To22,
Draft23On,
}Expand description
Which Prior gap conditions a draft states without contradicting itself.
Variants§
Draft11To13
draft-11 Section 10.1, draft-12 Section 10.1 and draft-13 Section 10.1: an Object may carry Prior Group ID Gap more than once, there is no Prior Object ID Gap, and no condition about a gap covering an earlier Object.
Draft14To15
draft-14 Section 11.1, draft-14 Section 11.3, draft-15 Section 11.1 and draft-15 Section 11.2: one instance of each gap per Object, “An endpoint receives an Object with a Prior Group ID Gap covering an Object it previously received”, its Prior Object ID Gap twin, and “An endpoint receives an Object with a Group ID within a previously communicated gap” and its twin.
Draft16To17
Drafts 16-17 state the conditions of drafts 14-15, but draft-16 Section 2.1 and draft-17 Section 2.1 say of an Object known to exist: “From this state, it can transition to not existing, but not vice versa.” A gap covering an Object already received is that transition, so the two covering conditions are ambiguous and not checked.
Draft18To22
Drafts 18-22 add, in draft-18 Section 2.1, draft-19 Section 2.1, draft-20 Section 2.1, draft-21 Section 2.1.1 and draft-22 Section 2.1.2: “an endpoint can receive an Object after it has already recorded that the Object does not exist […] This is not a protocol error and the Track is not malformed.” So the two within-gap conditions are ambiguous too, and neither pair is checked.
Draft23On
draft-23 Section 10.8 and draft-23 Section 10.9 state all four, and draft-23 Section 2.1.2 drops both sentences above.
Implementations§
Source§impl GapRules
impl GapRules
Sourcefn checks_covering(self) -> bool
fn checks_covering(self) -> bool
A gap covering the Group or Object before it on the stream is refused.
Sourcefn checks_within(self) -> bool
fn checks_within(self) -> bool
A Group or Object within the gap the one before it communicated is refused.