SubscriptionManager
Manages real-time subscriptions for sync notifications. Implements spec Section 10 (Real-Time Subscriptions).
public static class SubscriptionManager
Methods
CreateRecordSubscription(string, string, string, string, string, string?)
public static SyncSubscription CreateRecordSubscription(string subscriptionId, string originId, string tableName, string pkValues, string timestamp, string? expiresAt = null)
Creates a new record-level subscription.
Parameters:
| Name | Type | Description |
|---|---|---|
subscriptionId |
String |
Unique subscription ID. |
originId |
String |
Subscribing client's origin ID. |
tableName |
String |
Table to subscribe to. |
pkValues |
String |
Primary key values to watch (JSON array). |
timestamp |
String |
Current UTC timestamp. |
expiresAt |
String |
Optional expiration timestamp. |
Returns: SyncSubscription - New subscription record.
CreateTableSubscription(string, string, string, string, string?)
public static SyncSubscription CreateTableSubscription(string subscriptionId, string originId, string tableName, string timestamp, string? expiresAt = null)
Creates a new table-level subscription.
Parameters:
| Name | Type | Description |
|---|---|---|
subscriptionId |
String |
Unique subscription ID. |
originId |
String |
Subscribing client's origin ID. |
tableName |
String |
Table to subscribe to. |
timestamp |
String |
Current UTC timestamp. |
expiresAt |
String |
Optional expiration timestamp. |
Returns: SyncSubscription - New subscription record.
CreateQuerySubscription(string, string, string, string, string, string?)
public static SyncSubscription CreateQuerySubscription(string subscriptionId, string originId, string tableName, string queryCriteria, string timestamp, string? expiresAt = null)
Creates a new query-level subscription.
Parameters:
| Name | Type | Description |
|---|---|---|
subscriptionId |
String |
Unique subscription ID. |
originId |
String |
Subscribing client's origin ID. |
tableName |
String |
Table to subscribe to. |
queryCriteria |
String |
JSON query criteria for filtering. |
timestamp |
String |
Current UTC timestamp. |
expiresAt |
String |
Optional expiration timestamp. |
Returns: SyncSubscription - New subscription record.
MatchesChange(SyncSubscription, SyncLogEntry)
public static bool MatchesChange(SyncSubscription subscription, SyncLogEntry change)
Checks if a subscription matches a change.
Parameters:
| Name | Type | Description |
|---|---|---|
subscription |
SyncSubscription |
The subscription to check. |
change |
SyncLogEntry |
The change to match against. |
Returns: Boolean - True if the subscription should receive this change.
IsExpired(SyncSubscription, string)
public static bool IsExpired(SyncSubscription subscription, string currentTimestamp)
Checks if a subscription has expired.
Parameters:
| Name | Type | Description |
|---|---|---|
subscription |
SyncSubscription |
The subscription to check. |
currentTimestamp |
String |
Current UTC timestamp. |
Returns: Boolean - True if the subscription has expired.
FindMatchingSubscriptions(IEnumerable<SyncSubscription>, SyncLogEntry)
public static IReadOnlyList<SyncSubscription> FindMatchingSubscriptions(IEnumerable<SyncSubscription> subscriptions, SyncLogEntry change)
Finds all subscriptions that match a change.
Parameters:
| Name | Type | Description |
|---|---|---|
subscriptions |
SyncSubscription> |
All active subscriptions. |
change |
SyncLogEntry |
The change to find matching subscriptions for. |
Returns: SyncSubscription> - Matching subscriptions.
CreateNotifications(IEnumerable<SyncSubscription>, SyncLogEntry)
public static IReadOnlyList<ChangeNotification> CreateNotifications(IEnumerable<SyncSubscription> subscriptions, SyncLogEntry change)
Creates notifications for all matching subscriptions.
Parameters:
| Name | Type | Description |
|---|---|---|
subscriptions |
SyncSubscription> |
All active subscriptions. |
change |
SyncLogEntry |
The change to notify about. |
Returns: ChangeNotification> - Notifications to send.
FilterExpired(IEnumerable<SyncSubscription>, string)
public static IReadOnlyList<SyncSubscription> FilterExpired(IEnumerable<SyncSubscription> subscriptions, string currentTimestamp)
Filters out expired subscriptions.
Parameters:
| Name | Type | Description |
|---|---|---|
subscriptions |
SyncSubscription> |
Subscriptions to filter. |
currentTimestamp |
String |
Current UTC timestamp. |
Returns: SyncSubscription> - Active (non-expired) subscriptions.