Skip to main content

SubscriptionRegistry

Struct SubscriptionRegistry 

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

Registry managing all active subscriptions.

Thread-safe via internal RwLock. Read operations (used by the Ring 1 dispatcher) take a read lock. Write operations (create/cancel) take a write lock but are rare Ring 2 operations.

Three indices provide O(1) lookups:

  • subscriptions: by SubscriptionId
  • by_source: by source_id (u32) — used by the dispatcher
  • by_name: by source name (String) — used by admin API

§Panics

All methods on this type panic if an internal RwLock has been poisoned (i.e., a thread panicked while holding the lock). This should not occur under normal operation.

Implementations§

Source§

impl SubscriptionRegistry

Source

pub fn new() -> Self

Creates a new empty registry.

Source

pub fn create( &self, source_name: String, source_id: u32, config: SubscriptionConfig, ) -> (SubscriptionId, Receiver<ChangeEvent>)

Creates a new subscription for the given source.

Returns the subscription ID and a broadcast Receiver that the subscriber uses to receive ChangeEvents.

§Arguments
  • source_name — Name of the MV or streaming query.
  • source_id — Ring 0 source identifier (from NotificationHub).
  • config — Subscription configuration (buffer size, backpressure, etc.).
Source

pub fn pause(&self, id: SubscriptionId) -> bool

Pauses an active subscription.

Returns true if the subscription was Active and is now Paused. Returns false if the subscription does not exist or is not active.

Source

pub fn resume(&self, id: SubscriptionId) -> bool

Resumes a paused subscription.

Returns true if the subscription was Paused and is now Active. Returns false if the subscription does not exist or is not paused.

Source

pub fn cancel(&self, id: SubscriptionId) -> bool

Cancels a subscription and removes it from all indices.

Returns true if the subscription existed and was removed.

Source

pub fn get_senders_for_source(&self, source_id: u32) -> Vec<Sender<ChangeEvent>>

Returns broadcast senders for all active subscriptions of a source.

Called by the Ring 1 dispatcher on every notification. Uses a read lock for fast concurrent access.

Source

pub fn get_subscriptions_by_name(&self, name: &str) -> Vec<SubscriptionId>

Returns subscription IDs for the given source name.

Source

pub fn subscription_count(&self) -> usize

Returns the total number of registered subscriptions.

Source

pub fn active_count(&self) -> usize

Returns the number of active subscriptions.

Source

pub fn metrics(&self, id: SubscriptionId) -> Option<SubscriptionMetrics>

Returns a metrics snapshot for the given subscription.

Source

pub fn state(&self, id: SubscriptionId) -> Option<SubscriptionState>

Returns the state of a subscription.

Source

pub fn record_delivery(&self, id: SubscriptionId, count: u64)

Increments the delivered event count for a subscription.

Called by the Ring 1 dispatcher after successful delivery.

Source

pub fn record_drop(&self, id: SubscriptionId, count: u64)

Increments the dropped event count for a subscription.

Called by the Ring 1 dispatcher on backpressure.

Trait Implementations§

Source§

impl Default for SubscriptionRegistry

Source§

fn default() -> Self

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

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> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
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> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
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
Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,