Table of Contents

Class SubscriptionManagerBase<TEvent, TSubscription>

Namespace
Virtufin.Api.Services
Assembly
Virtufin.Api.dll

Abstract base class for managing event subscriptions with health monitoring. Provides common subscription management, broadcasting, and cleanup functionality.

public abstract class SubscriptionManagerBase<TEvent, TSubscription> where TSubscription : class

Type Parameters

TEvent

The type of events to broadcast.

TSubscription

The type of subscription handles.

Inheritance
SubscriptionManagerBase<TEvent, TSubscription>
Derived
Inherited Members

Constructors

SubscriptionManagerBase(ILogger)

protected SubscriptionManagerBase(ILogger logger)

Parameters

logger ILogger

Fields

_logger

protected readonly ILogger _logger

Field Value

ILogger

_subscriptions

protected readonly ConcurrentDictionary<string, ConcurrentDictionary<string, TSubscription>> _subscriptions

Field Value

ConcurrentDictionary<string, ConcurrentDictionary<string, TSubscription>>

Methods

BroadcastAsync(string, TEvent, CancellationToken)

Broadcasts an event to all subscriptions for a topic.

public Task BroadcastAsync(string topic, TEvent evt, CancellationToken cancellationToken)

Parameters

topic string

The topic to broadcast to.

evt TEvent

The event to broadcast.

cancellationToken CancellationToken

The cancellation token for the broadcast.

Returns

Task

A task that completes when all event sends have finished.

GetIdleTimeout(TSubscription)

Gets the idle timeout for a subscription.

protected abstract TimeSpan GetIdleTimeout(TSubscription subscription)

Parameters

subscription TSubscription

The subscription to get the timeout for.

Returns

TimeSpan

The idle timeout duration.

GetSubscriptionCount(string)

Gets the number of subscriptions for a specific topic.

public int GetSubscriptionCount(string topic)

Parameters

topic string

The topic name.

Returns

int

The count of subscriptions for the topic.

GetSubscriptionKey(TSubscription)

Gets the subscription key for a subscription.

protected abstract string GetSubscriptionKey(TSubscription subscription)

Parameters

subscription TSubscription

The subscription to get the key for.

Returns

string

The subscription key string.

GetTotalSubscriptionCount()

Gets the total number of subscriptions across all topics.

public int GetTotalSubscriptionCount()

Returns

int

The total subscription count.

SendEventAsync(TSubscription, TEvent, CancellationToken)

Sends an event to a subscription.

protected abstract Task SendEventAsync(TSubscription subscription, TEvent evt, CancellationToken cancellationToken)

Parameters

subscription TSubscription

The subscription to send to.

evt TEvent

The event to send.

cancellationToken CancellationToken

The cancellation token.

Returns

Task

Subscribe(TSubscription)

Creates a subscription for a topic and returns a unique subscription ID.

public string Subscribe(TSubscription subscription)

Parameters

subscription TSubscription

The subscription handle containing connection details.

Returns

string

A unique subscription identifier.

Unsubscribe(string, string)

Removes a subscription by its key and ID.

public void Unsubscribe(string subscriptionKey, string subscriptionId)

Parameters

subscriptionKey string

The subscription key (typically topic name).

subscriptionId string

The subscription identifier to remove.