pub struct SlotFill {
pub dest_suffix: Vec<u8>,
pub payload: Vec<u8>,
pub trigger_only: bool,
pub type_hash: u64,
}Expand description
One slot-fill record carried inside a WireEnvelope. Each fill
names its destination via a multiaddr suffix that’s appended to
the receiver’s self-identity to form the full address.
Fields§
§dest_suffix: Vec<u8>Per-slot multiaddr suffix encoded via the canonical Address
binary form. Two shapes per ADDRESSING.md:
/graph/{id}/site/{site} — data-plane slot fill
/component/{cref}/op/{name} — control-plane component dispatch
The receiver parses the suffix; the trailing Site/Op segment
identifies the decoder + dispatch target.
payload: Vec<u8>Wire-encoded bytes; empty when trigger_only=true. For
data-plane fills the decoder comes from the Site’s declared
TypeMeta. For control-plane fills the component decodes its
own payload.
trigger_only: boolTrue when the consumer only reads the firing signal, not the
value. Set by the analyzer’s analyze_wire_edges pass.
type_hash: u64Phase 12.2 — Per-fill type-hash discriminator. Stamped by the
sender’s wire encoder from the slot value’s static
T::HASH constant (every wire-eligible type derives a
stable u64 hash). Receiver dispatches via
if fill.type_hash == T::HASH { T::deserialize(&fill.payload) },
so mis-encoded fills surface as an explicit type mismatch
instead of silently deserializing as the wrong type
(S10 closure).
Trait Implementations§
Source§impl Message for SlotFill
impl Message for SlotFill
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self.impl StructuralPartialEq for SlotFill
Auto Trait Implementations§
impl Freeze for SlotFill
impl RefUnwindSafe for SlotFill
impl Send for SlotFill
impl Sync for SlotFill
impl Unpin for SlotFill
impl UnsafeUnpin for SlotFill
impl UnwindSafe for SlotFill
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ErasedComponent for T
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request