Skip to main content

RedexReplicationRouter

Struct RedexReplicationRouter 

Source
pub struct RedexReplicationRouter { /* private fields */ }
Expand description

Per-Redex registry of runtime handles, dispatching by channel id. Cheap to clone (everything is Arc) so the same router can be shared between Redex (for registration) and MeshNode (for inbound dispatch).

Implementations§

Source§

impl RedexReplicationRouter

Source

pub fn new() -> Self

Construct an empty router.

Source

pub fn register( &self, channel_id: ChannelId, handle: Arc<ReplicationRuntimeHandle>, ) -> Option<Arc<ReplicationRuntimeHandle>>

Register a runtime handle under channel_id. Returns the previously-registered handle if one existed, so the caller can cancel it cleanly. Re-registration is the RedexFileConfig::replication update path — same channel, new config, new runtime.

Source

pub fn get( &self, channel_id: &ChannelId, ) -> Option<Arc<ReplicationRuntimeHandle>>

Look up a runtime handle. Cloned Arc so the caller can drive the handle (dispatch events, cancel) without holding the DashMap shard lock.

Source

pub fn unregister( &self, channel_id: &ChannelId, ) -> Option<Arc<ReplicationRuntimeHandle>>

Remove the registration for channel_id. Returns the removed handle, if any, so the caller can cancel + await its exit deterministically.

Source

pub fn len(&self) -> usize

Number of registered runtimes.

Source

pub fn is_empty(&self) -> bool

True iff no runtimes are registered.

Source

pub fn snapshot_handles( &self, ) -> Vec<(ChannelId, Arc<ReplicationRuntimeHandle>)>

Snapshot every registered (ChannelId, handle) pair. The Arc clone is cheap; the caller can iterate without holding shard locks. Consumed by Redex to build the per-channel status snapshot for operator observability.

Trait Implementations§

Source§

impl Default for RedexReplicationRouter

Source§

fn default() -> RedexReplicationRouter

Returns the “default value” for a type. Read more
Source§

impl ReplicationInboundRouter for RedexReplicationRouter

Source§

fn try_route( &self, channel_id: ChannelId, inbound: Inbound, ) -> Result<(), Inbound>

Try to route an inbound event to its channel’s runtime. Sync + non-blocking — must not call into async code, must not hold locks across awaits (the mesh dispatch loop is the sole caller and runs in a synchronous critical section).

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more