Skip to main content

Class: PendingSubscriptionTracker

Gala Launchpad SDK 9.0.0-rc.5


Gala Launchpad SDK 9.0.0-rc.5 / index / PendingSubscriptionTracker

Class: PendingSubscriptionTracker

Defined in: packages/launchpad-sdk/dist/utils/websocket-patterns.d.ts:224

Pending Subscription Tracker

Tracks pending subscriptions with timeout guards. Prevents memory leaks from subscriptions that never complete. Used when subscribing to streams where confirmation is required from the server.

Features:

  • Automatic timeout handling
  • Memory leak prevention (clears expired pending)
  • Tracks pending duration
  • Fast O(1) checks

Example​

// Test case: Pending subscription tracking with timeouts
const tracker = new PendingSubscriptionTracker();

// Add pending subscription with 1 second timeout
tracker.addPending('sub-123', 1000);
console.assert(tracker.isPending('sub-123') === true);
console.assert(tracker.getPendingCount() === 1);

// Mark as completed (timeout won't fire)
tracker.removePending('sub-123');
console.assert(tracker.isPending('sub-123') === false);

// Check if subscription timed out
tracker.addPending('sub-456', 100);
await new Promise(r => setTimeout(r, 200)); // Wait for timeout
tracker.clearExpired(); // Manual cleanup
console.assert(tracker.isPending('sub-456') === false);

// Multiple pending subscriptions
tracker.addPending('sub-a', 1000);
tracker.addPending('sub-b', 1000);
tracker.addPending('sub-c', 1000);
console.assert(tracker.getPendingCount() === 3);

Since​

6.6.0

Constructors​

Constructor​

new PendingSubscriptionTracker(): PendingSubscriptionTracker

Returns​

PendingSubscriptionTracker

Methods​

addPending()​

addPending(id, timeoutMs): void

Defined in: packages/launchpad-sdk/dist/utils/websocket-patterns.d.ts:232

Add a pending subscription with timeout

Parameters​

id​

string

Subscription identifier (e.g., token name)

timeoutMs​

number

Timeout duration in milliseconds

Returns​

void


clear()​

clear(): void

Defined in: packages/launchpad-sdk/dist/utils/websocket-patterns.d.ts:262

Clear all pending subscriptions

Returns​

void


clearExpired()​

clearExpired(): void

Defined in: packages/launchpad-sdk/dist/utils/websocket-patterns.d.ts:258

Manually clear expired pending subscriptions

Normally called automatically by the timeout, but can be called explicitly for cleanup.

Returns​

void


getPendingCount()​

getPendingCount(): number

Defined in: packages/launchpad-sdk/dist/utils/websocket-patterns.d.ts:251

Get count of pending subscriptions

Returns​

number

Number of subscriptions currently pending


isPending()​

isPending(id): boolean

Defined in: packages/launchpad-sdk/dist/utils/websocket-patterns.d.ts:245

Check if a subscription is pending

Parameters​

id​

string

Subscription identifier to check

Returns​

boolean

True if subscription is still pending


removePending()​

removePending(id): void

Defined in: packages/launchpad-sdk/dist/utils/websocket-patterns.d.ts:238

Remove a pending subscription (e.g., when it completes or is cancelled)

Parameters​

id​

string

Subscription identifier to remove

Returns​

void