pub enum PayloadPlacementDecision {
Chosen {
payload_id: String,
payload_kind: String,
byte_size: u64,
content_digest: Option<String>,
chosen: PlacementClass,
first_preference: bool,
rejected: Vec<PlacementRejection>,
},
Failed {
payload_id: String,
payload_kind: String,
byte_size: u64,
content_digest: Option<String>,
failure_class: FailureClass,
rejected: Vec<PlacementRejection>,
},
Skipped {
payload_id: String,
payload_kind: String,
byte_size: u64,
content_digest: Option<String>,
rejected: Vec<PlacementRejection>,
},
}Expand description
Per-payload placement decision produced by negotiation.
One of three shapes (encoded as a typed decision rather than a
wire enum so the receipt stage can map it onto
payload_receipts[].status):
Chosen— aPlacementClasssatisfied the payload;Failed— no acceptable placement was satisfiable and at least one of them wasRequirementLevel::Required, so the dispatch fails closed with the structured rejection list;Skipped— no acceptable placement was satisfiable but every acceptable placement wasPreferred/Optional, so per the spec’s placement-resolution rule Lifeloop continues with a skipped payload receipt rather than failing the dispatch.
Every variant carries the payload provenance observed during negotiation so receipt synthesis does not need to infer it from callback responses.
Variants§
Chosen
A placement was chosen. payload_kind, byte_size, and
content_digest are copied from the negotiated payload
envelope. chosen is the routing PlacementClass that won;
first_preference is true when the chosen placement was the
first entry in acceptable_placements. rejected lists any
earlier placements that failed before the chosen one was
reached.
Failed
No acceptable placement was satisfiable. payload_kind,
byte_size, and content_digest are copied from the
negotiated payload envelope. failure_class is either
FailureClass::PlacementUnavailable (no acceptable placement
supported at all) or FailureClass::PayloadTooLarge (every
otherwise-supported placement rejected the byte size).
Skipped
No acceptable placement was satisfiable, but none of them was
Required, so the dispatch continues with a skipped payload
receipt. payload_kind, byte_size, and content_digest are
copied from the negotiated payload envelope; rejected lists
every placement that was tried and rejected.
Implementations§
Trait Implementations§
Source§impl Clone for PayloadPlacementDecision
impl Clone for PayloadPlacementDecision
Source§fn clone(&self) -> PayloadPlacementDecision
fn clone(&self) -> PayloadPlacementDecision
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PayloadPlacementDecision
impl Debug for PayloadPlacementDecision
impl Eq for PayloadPlacementDecision
Source§impl PartialEq for PayloadPlacementDecision
impl PartialEq for PayloadPlacementDecision
impl StructuralPartialEq for PayloadPlacementDecision
Auto Trait Implementations§
impl Freeze for PayloadPlacementDecision
impl RefUnwindSafe for PayloadPlacementDecision
impl Send for PayloadPlacementDecision
impl Sync for PayloadPlacementDecision
impl Unpin for PayloadPlacementDecision
impl UnsafeUnpin for PayloadPlacementDecision
impl UnwindSafe for PayloadPlacementDecision
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.