pub struct GuaranteeSet {
pub delivery: Delivery,
pub acknowledgement: Acknowledgement,
pub durability: Option<Durability>,
pub replicas: Option<u64>,
pub ordering: OrderingMode,
pub deduplication: Deduplication,
pub dedup_window_ms: Option<u64>,
pub backpressure: Backpressure,
pub producer_naming: ProducerNaming,
pub control_isolated: bool,
}Expand description
One level per guarantee dimension, as declared in HELLO keys 5 and 6
(docs/PROTOCOL.md §6.5).
GuaranteeSet::CORE is the default set and is exactly what v0 does, so
an absent HELLO key, an empty map and CORE are the same statement
(decisions/0006 §4.2).
Every field is a small Copy value: a set costs no allocation, which is
what lets it ride a header a peer controls.
Fields§
§delivery: DeliveryDelivery dimension.
acknowledgement: AcknowledgementAcknowledgement/completion dimension.
durability: Option<Durability>Persistence axis; legal only with Stored or Replicated.
replicas: Option<u64>Replica count, leader included; legal only with Replicated, and ≥ 2.
ordering: OrderingModeOrdering dimension.
deduplication: DeduplicationDeduplication dimension.
dedup_window_ms: Option<u64>Dedup window; required with Bounded, forbidden otherwise.
backpressure: BackpressureBackpressure behaviour. Not ordered.
producer_naming: ProducerNamingHow the producer of a sequenced transfer is named. Not ordered.
control_isolated: boolWhether control traffic is isolated from bulk traffic
(decisions/0002
§6.1). Ordered: true is strictly stronger.
Implementations§
Source§impl GuaranteeSet
impl GuaranteeSet
Sourcepub const CORE: GuaranteeSet
pub const CORE: GuaranteeSet
The default set: what v0 offers and requires.
Sourcepub fn is_core(&self) -> bool
pub fn is_core(&self) -> bool
Is this the default set? A core declaration is never written: it is
what an absent key already means.
Sourcepub fn intersect(
&self,
other: &GuaranteeSet,
) -> Result<GuaranteeSet, &'static str>
pub fn intersect( &self, other: &GuaranteeSet, ) -> Result<GuaranteeSet, &'static str>
The weaker of two offered sets, dimension by dimension
(docs/PROTOCOL.md §2.3 step 5).
Ladders take the minimum. Dimensions that are not ordered — backpressure, producer naming, and the two independent axes of a durability level — have no “weaker”, so the two declarations must be equal; the name of the dimension comes back as the error so a peer can be told which one disagreed.
Sourcepub fn reaches(&self, required: &GuaranteeSet) -> bool
pub fn reaches(&self, required: &GuaranteeSet) -> bool
Does this set reach required on every dimension?
Ladders compare by level, the durability axes compare per axis, and the unordered dimensions must match exactly. A longer dedup window is the stronger promise.