UNPKG

hamok

Version:

Lightweight Distributed Object Storage on RAFT consensus algorithm

87 lines 3.99 kB
import { EventEmitter } from 'events'; import { HamokConnection } from './HamokConnection'; import { HamokEmitterSnapshot } from '../HamokSnapshot'; export interface HamokEmitterEventMap extends Record<string, unknown[]> { } export type HamokEmitterStats = { numberOfSubscriptions: number; numberOfReceivedEventInvocations: number; numberOfSentEventInvocations: number; }; export declare class HamokEmitter<T extends HamokEmitterEventMap, M extends Record<string, unknown> = Record<string, unknown>> { readonly connection: HamokConnection<string, string>; readonly payloadsCodec?: Map<keyof T, { encode: (...args: unknown[]) => string; decode: (data: string) => unknown[]; }> | undefined; readonly autoClean?: boolean | undefined; readonly subscriptions: HamokEmitterSubscriptions<T, M>; private readonly _emitter; private _initializing?; private _closed; stats: HamokEmitterStats; constructor(connection: HamokConnection<string, string>, payloadsCodec?: Map<keyof T, { encode: (...args: unknown[]) => string; decode: (data: string) => unknown[]; }> | undefined, autoClean?: boolean | undefined); get id(): string; get empty(): boolean; get ready(): Promise<this>; get closed(): boolean; close(): void; /** * This method is used to cleanup the subscriptions by removing the endpoints that are not in the grid anymore. */ cleanup(): Promise<ReadonlySet<string> | undefined>; hasSubscribers<K extends keyof T>(event: K, filterByLocalNode?: boolean): Promise<boolean>; subscribe<K extends keyof T>(event: K, listener: (...args: T[K]) => void, metaData?: M | null): Promise<void>; updateSubscriptionMetaData<K extends keyof T>(event: K, newMetaData: M, prevMetaData?: M | null): Promise<boolean>; unsubscribe<K extends keyof T>(event: K, listener: (...args: T[K]) => void): Promise<void>; clear(): void; publish<K extends keyof T>(event: K, ...args: T[K]): Promise<string[]>; notify<K extends keyof T>(event: K, ...args: T[K]): boolean; export(): HamokEmitterSnapshot; import(snapshot: HamokEmitterSnapshot): void; private _import; private _startInitializing; } type HamokSubscriptionsEmitterEventMap<EventMap extends HamokEmitterEventMap, M extends Record<string, unknown> = Record<string, unknown>> = { 'added': [ event: keyof EventMap, peerId: string, metaData: M | null ]; 'updated': [ event: keyof EventMap, peerId: string, newMetaData: M, prevMetaData?: M | null ]; 'removed': [ event: keyof EventMap, peerId: string, metaData: M | null ]; 'debug': [ log: string ]; }; declare class HamokEmitterSubscriptions<EventMap extends HamokEmitterEventMap, M extends Record<string, unknown> = Record<string, unknown>> extends EventEmitter<HamokSubscriptionsEmitterEventMap<EventMap, M>> { private readonly _map; hasEvent<K extends keyof EventMap>(event: K): boolean; addPeer<K extends keyof EventMap>(event: K, peerId: string, metaData?: M | null): boolean; updatePeer<K extends keyof EventMap>(event: K, peerId: string, metaData: M, prevMetaData?: M | null): boolean; removePeer<K extends keyof EventMap>(event: K, peerId: string): boolean; removePeerFromAllEvent(peerId: string): boolean; getEventPeersMap<K extends keyof EventMap>(event: K): Map<string, M | null> | undefined; entries(): IterableIterator<[keyof EventMap, Map<string, M | null>]>; events(): IterableIterator<keyof EventMap>; hasPeerOnEvent<K extends keyof EventMap>(event: K, peerId: string): boolean; getPeerIds<K extends keyof EventMap>(event: K): Set<string> | undefined; getAllPeerIds(): Set<string>; get [Symbol.toStringTag](): string; get size(): number; get [Symbol.species](): typeof HamokEmitterSubscriptions; } export {}; //# sourceMappingURL=HamokEmitter.d.ts.map