signalk-server
Version:
An implementation of a [Signal K](http://signalk.org) server for boats.
100 lines • 2.72 kB
TypeScript
/**
* WASM Plugin Delta Subscription Management
*
* Manages delta subscriptions for WASM plugins, including:
* - Subscription pattern matching
* - Buffering during hot-reload
* - Subscription state preservation across reloads
*/
export interface DeltaSubscription {
pluginId: string;
pattern: string;
callback: (delta: any) => void;
}
export interface Delta {
context: string;
updates: Array<{
source: any;
timestamp: string;
values: Array<{
path: string;
value: any;
}>;
}>;
}
export declare class WasmSubscriptionManager {
private subscriptions;
private buffers;
private buffering;
/**
* Register a delta subscription for a plugin
*/
register(pluginId: string, pattern: string, callback: (delta: any) => void): void;
/**
* Unregister all subscriptions for a plugin
*/
unregister(pluginId: string): void;
/**
* Get all subscriptions for a plugin
*/
getSubscriptions(pluginId: string): DeltaSubscription[];
/**
* Check if a delta path matches a subscription pattern
*/
private matchesPattern;
/**
* Route a delta to subscribed plugins
*/
routeDelta(delta: Delta): void;
/**
* Start buffering deltas for a plugin (during reload)
*/
startBuffering(pluginId: string): void;
/**
* Stop buffering and return buffered deltas
*/
stopBuffering(pluginId: string): Delta[];
/**
* Buffer a delta for a plugin
*/
private bufferDelta;
/**
* Redirect delta routing to buffer for a plugin
*/
redirectToBuffer(pluginId: string): void;
/**
* Restore normal delta routing for a plugin
*/
restore(pluginId: string): void;
/**
* Replay buffered deltas to a plugin's callback
*/
replayBuffered(pluginId: string, callback: (delta: Delta) => void): void;
/**
* Get statistics about subscriptions
*/
getStats(): {
totalSubscriptions: number;
activePlugins: number;
bufferingPlugins: number;
bufferedDeltas: number;
};
/**
* Clear all subscriptions and buffers
*/
clear(): void;
}
/**
* Get the global subscription manager
*/
export declare function getSubscriptionManager(): WasmSubscriptionManager;
/**
* Initialize the subscription manager
*/
export declare function initializeSubscriptionManager(): WasmSubscriptionManager;
/**
* Reset the subscription manager singleton (for hotplug support)
* This should be called after shutdown to allow re-initialization
*/
export declare function resetSubscriptionManager(): void;
//# sourceMappingURL=wasm-subscriptions.d.ts.map