pub struct Address { /* private fields */ }Expand description
Multiaddr - a sequence of typed Protocol segments describing
a delivery path. Per docs/ADDRESSING.md, this is BB’s canonical
address type: the suffix segments tell the receiver where to
route inside its own node, so no per-message-type or
per-endpoint-id lookup tables are needed.
Construct via the builder chain
(Address::empty().p2p(...).site(...).component(...).op(...)),
Address::from_bytes, or Address::parse_str.
Implementations§
Source§impl Address
impl Address
Sourcepub fn site(self, site: NodeSiteId) -> Self
pub fn site(self, site: NodeSiteId) -> Self
Builder - append data-plane Site segment.
Sourcepub fn component(self, c: ComponentRef) -> Self
pub fn component(self, c: ComponentRef) -> Self
Builder - append control-plane Component segment.
Sourcepub fn site_id(&self) -> Option<NodeSiteId>
pub fn site_id(&self) -> Option<NodeSiteId>
First Site segment, if any.
Sourcepub fn component_ref(&self) -> Option<ComponentRef>
pub fn component_ref(&self) -> Option<ComponentRef>
First Component segment, if any.
Sourcepub fn from_bytes(bytes: &[u8]) -> Result<Self, AddressError>
pub fn from_bytes(bytes: &[u8]) -> Result<Self, AddressError>
Decode from canonical binary form.
Sourcepub fn parse_str(s: &str) -> Result<Self, AddressError>
pub fn parse_str(s: &str) -> Result<Self, AddressError>
Parse a /protocol/value/... string form. Only the four
BB-internal protocols (p2p, site, component, op) are
recognized - transport-layer segments (ip4/tcp/udp/etc.)
belong to host adapters and never reach this parser.
Example: /p2p/12/site/17 or /p2p/12/component/5/op/FindNode.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Address
impl<'de> Deserialize<'de> for Address
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for Address
impl StructuralPartialEq for Address
Auto Trait Implementations§
impl Freeze for Address
impl RefUnwindSafe for Address
impl Send for Address
impl Sync for Address
impl Unpin for Address
impl UnsafeUnpin for Address
impl UnwindSafe for Address
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> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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.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::RequestSource§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> SlotValue for T
impl<T> SlotValue for T
Source§fn into_any_boxed(self: Box<T>) -> Box<dyn Any + Sync + Send>
fn into_any_boxed(self: Box<T>) -> Box<dyn Any + Sync + Send>
Box<dyn SlotValue> as Box<dyn Any> for
Box::downcast. Required because the SlotValue and
Any vtables are distinct even though SlotValue: Any.Source§fn clone_boxed(&self) -> Box<dyn SlotValue>
fn clone_boxed(&self) -> Box<dyn SlotValue>
Source§fn to_wire_bytes(&self) -> Result<Vec<u8>, SlotValueError>
fn to_wire_bytes(&self) -> Result<Vec<u8>, SlotValueError>
clone_boxed instead.Source§fn type_hash(&self) -> u64
fn type_hash(&self) -> u64
std::any::type_name::<T>(); receiver decodes only on a
matching hash.Source§fn runtime_type(&self) -> &'static TypeNode
fn runtime_type(&self) -> &'static TypeNode
Source§fn charged_bytes(&self) -> usize
fn charged_bytes(&self) -> usize
NodeConfig::ingress_byte_budget. Slot-table eviction calls
this to release the charge. Default 0 — only
ingress-derived carriers register a non-zero resolver via
[register_charged_bytes!].