pub struct IngressQueueRef(/* private fields */);Expand description
Cheap-clone handle to the shared IngressQueue surfaced by
crate::node::Node::ingress_handle.
Behaves identically to Arc<IngressQueue> via Deref so
callers can .push(IngressEvent::...) directly. The newtype
wrapper isolates the public API from the underlying smart-pointer
choice.
Implementations§
Source§impl IngressQueueRef
impl IngressQueueRef
Sourcepub fn new(queue: Arc<IngressQueue>) -> Self
pub fn new(queue: Arc<IngressQueue>) -> Self
Wrap an existing Arc<IngressQueue>. Used by Node after
borrowing from the inner engine.
Source§impl IngressQueueRef
impl IngressQueueRef
Sourcepub fn arc(&self) -> &Arc<IngressQueue>
pub fn arc(&self) -> &Arc<IngressQueue>
Borrow the underlying Arc<IngressQueue>. Used by transport
adapters and in-process test buses that need to share the
queue across threads — both pin a per-Node queue handle and
push events as the transport receives them.
Methods from Deref<Target = IngressQueue>§
Sourcepub fn completion_result_cap(&self) -> usize
pub fn completion_result_cap(&self) -> usize
Per-complete() result-byte cap. Defaults to usize::MAX
when not configured; apply_config_caps reseeds it from
NodeConfig::max_completion_result_bytes.
Sourcepub fn push(&self, event: IngressEvent) -> Result<(), IngressEvent>
pub fn push(&self, event: IngressEvent) -> Result<(), IngressEvent>
Push an event. On success returns Ok(()) and wakes the
engine if it’s sleeping. On a full queue the event comes
back in Err(_) and the dropped_overflow counter is
incremented; transport adapters decide whether to retry,
drop with a metric, or escalate as back-pressure. The
IngressEvent Err variant is large (carries a
WireEnvelope with multihash PeerIds); transport adapters
already box or re-queue, so the cost lives at the boundary.
Sourcepub fn drain_all(&self) -> Vec<IngressEvent>
pub fn drain_all(&self) -> Vec<IngressEvent>
Drain all available events. Called by the engine on each poll cycle’s ingress drain.
Pre-reserves capacity for the bounded queue’s full length so the
drain Vec grows once at construction, not in O(log n)
reallocations as events pop. The queue itself caps inflight at
self.capacity(); the drain is bounded by the same cap, so the
upfront reservation is the exact-fit answer.
Sourcepub fn register_waker(&self, waker: &Waker)
pub fn register_waker(&self, waker: &Waker)
Register the engine’s waker so future pushes can wake it.
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Approximate current queue depth. The underlying
concurrent-queue returns an approximate len for the
MPMC case; introspection callers should treat
this as a snapshot, not a real-time invariant.
Sourcepub fn capacity(&self) -> usize
pub fn capacity(&self) -> usize
Bounded capacity supplied at construction. concurrent-queue
guarantees Some(cap) for bounded queues, so unwrapping is
safe for the framework’s path that never builds an unbounded
ingress queue.
Sourcepub fn dropped_overflow(&self) -> u64
pub fn dropped_overflow(&self) -> u64
Total events dropped due to the queue being full since this queue was constructed. Telemetry hook for transport adapters
- Node introspection.
Trait Implementations§
Source§impl Clone for IngressQueueRef
impl Clone for IngressQueueRef
Source§fn clone(&self) -> IngressQueueRef
fn clone(&self) -> IngressQueueRef
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 IngressQueueRef
impl Debug for IngressQueueRef
Auto Trait Implementations§
impl !RefUnwindSafe for IngressQueueRef
impl !UnwindSafe for IngressQueueRef
impl Freeze for IngressQueueRef
impl Send for IngressQueueRef
impl Sync for IngressQueueRef
impl Unpin for IngressQueueRef
impl UnsafeUnpin for IngressQueueRef
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