pub struct SubscriptionManager { /* private fields */ }Expand description
Manages active subscriptions and event routing.
The SubscriptionManager is the central hub for:
- Tracking active subscriptions per connection
- Receiving events from database listeners
- Matching events to subscriptions
- Broadcasting to transport adapters
Implementations§
Source§impl SubscriptionManager
impl SubscriptionManager
Sourcepub fn new(schema: Arc<CompiledSchema>) -> Self
pub fn new(schema: Arc<CompiledSchema>) -> Self
Create a new subscription manager.
§Arguments
schema- Compiled schema containing subscription definitionschannel_capacity- Broadcast channel capacity (default: 1024)
Sourcepub fn with_capacity(
schema: Arc<CompiledSchema>,
channel_capacity: usize,
) -> Self
pub fn with_capacity( schema: Arc<CompiledSchema>, channel_capacity: usize, ) -> Self
Create a new subscription manager with custom channel capacity.
Sourcepub fn receiver(&self) -> Receiver<SubscriptionPayload>
pub fn receiver(&self) -> Receiver<SubscriptionPayload>
Get a receiver for subscription payloads.
Transport adapters use this to receive events for delivery.
Sourcepub fn subscribe(
&self,
subscription_name: &str,
user_context: Value,
variables: Value,
connection_id: &str,
) -> Result<SubscriptionId, SubscriptionError>
pub fn subscribe( &self, subscription_name: &str, user_context: Value, variables: Value, connection_id: &str, ) -> Result<SubscriptionId, SubscriptionError>
Subscribe to a subscription type.
§Arguments
subscription_name- Name of the subscription typeuser_context- User authentication/authorization contextvariables- Runtime variables from clientconnection_id- Client connection identifier
§Errors
Returns error if subscription not found or user not authorized.
Sourcepub fn unsubscribe(&self, id: SubscriptionId) -> Result<(), SubscriptionError>
pub fn unsubscribe(&self, id: SubscriptionId) -> Result<(), SubscriptionError>
Sourcepub fn unsubscribe_connection(&self, connection_id: &str)
pub fn unsubscribe_connection(&self, connection_id: &str)
Unsubscribe all subscriptions for a connection.
Called when a client disconnects.
Sourcepub fn get_subscription(&self, id: SubscriptionId) -> Option<ActiveSubscription>
pub fn get_subscription(&self, id: SubscriptionId) -> Option<ActiveSubscription>
Get an active subscription by ID.
Sourcepub fn get_connection_subscriptions(
&self,
connection_id: &str,
) -> Vec<ActiveSubscription>
pub fn get_connection_subscriptions( &self, connection_id: &str, ) -> Vec<ActiveSubscription>
Get all active subscriptions for a connection.
Sourcepub fn subscription_count(&self) -> usize
pub fn subscription_count(&self) -> usize
Get total number of active subscriptions.
Sourcepub fn connection_count(&self) -> usize
pub fn connection_count(&self) -> usize
Get number of active connections with subscriptions.
Sourcepub fn publish_event(&self, event: SubscriptionEvent) -> usize
pub fn publish_event(&self, event: SubscriptionEvent) -> usize
Publish an event to matching subscriptions.
This is called by the database listener when an event is received. The event is matched against all active subscriptions and delivered to matching ones.
§Arguments
event- The database event to publish
§Returns
Number of subscriptions that matched the event.