aedes-cached-persistence
Version:
Abstract class to write an Aedes persistence with in-process caching of subscriptions
92 lines (75 loc) • 2.31 kB
TypeScript
import type { Client } from 'aedes';
import type {
AedesPersistence,
AedesPersistenceSubscription,
CallbackError,
Packet,
} from 'aedes-persistence';
import type { EventEmitter } from 'node:events';
import type { Readable } from 'node:stream';
export type { Packet } from 'aedes-persistence';
type ExcludedAedesPersistenceFunctions =
| 'storeRetained'
| 'countOffline'
| 'outgoingEnqueue'
| 'outgoingUpdate'
| 'addSubscriptions'
| 'removeSubscriptions'
| 'outgoingClearMessageId'
| 'incomingStorePacket'
| 'incomingGetPacket'
| 'incomingDelPacket'
| 'putWill'
| 'delWill'
| 'createRetainedStream'
| 'outgoingStream'
| 'subscriptionsByClient'
| 'getWill'
| 'streamWill'
| 'getClientList'
| 'destroy';
export class AedesCachedPersistence
extends EventEmitter
implements Omit<AedesPersistence, ExcludedAedesPersistenceFunctions> {
ready: boolean;
destroyed: boolean;
_parallel: any;
_trie: any; // Qlobber
_waiting: Record<string, (error?: Error | null, client?: Client) => void>;
once(event: 'ready', listener: (...args: any[]) => void): this;
_onMessage(packet: Packet, cb: () => void): void;
constructor(options?: { captureRejections?: boolean });
// action is prefixed by sub_ or unsub_
_waitFor: (
client: Client,
action: string,
cb: (error?: Error | null, client?: Client) => void
) => void;
_addedSubscriptions: (
client: Client,
subs: AedesPersistenceSubscription[],
cb: (error?: Error | null, client?: Client) => void
) => void;
_removedSubscriptions: (
client: Client,
subs: AedesPersistenceSubscription[],
cb: (error?: Error | null, client?: Client) => void
) => void;
_setup: () => void;
createRetainedStreamCombi: (patterns: string[]) => Readable;
subscriptionsByTopic: (
pattern: string,
cb: (error: CallbackError, subs: AedesPersistenceSubscription[]) => void
) => void;
cleanSubscriptions: (
client: Client,
cb: (error: CallbackError, client: Client) => void
) => void;
outgoingEnqueueCombi: (
sub: { clientId: string }[],
packet: Packet,
cb: (error: CallbackError) => void
) => void;
destroy: (cb?: (error: CallbackError) => void) => void;
}
export default function aedesCachedPersistence(): AedesCachedPersistence;