acebase-ipc-server
Version:
IPC Server that provides communication between isolated AceBase processes using the same database files, such as local pm2 and cloud-based clusters.
47 lines (46 loc) • 1.45 kB
TypeScript
export interface ISubscription {
unsubscribe(): any;
}
export interface IObserver<T> {
next(value: T): any;
start?(subscription: ISubscription): void;
error?(error: any): any;
complete?(value: any): void;
}
declare type CleanupFunction = () => any;
declare type CreateFunction<T> = (observer: IObserver<T>) => CleanupFunction;
declare type SubscribeFunction<T> = (value: T) => any;
export interface IObservableLike<T> {
subscribe(subscriber: SubscribeFunction<T>): ISubscription;
}
/**
* Very basic Observable implementation
* @example
* // Create an observable for messages received through a websocket
* const messageObservable = new SimpleObservable(observer => {
* const ws = new WebSocket('ws://myserver/connect');
* ws.addEventListener('message', event => {
* observer.next(event.data);
* })
* return function cleanup() {
* ws.close();
* }
* });
*
* // Subscribe to received messages:
* const subscription = messageObservable.subscribe(msg => {
* console.log(`Received message:`, msg)
* });
*
* // Stop subscription:
* subscription.unsubscribe();
*/
export declare class SimpleObservable<T> implements IObservableLike<T> {
private _active;
private _create;
private _cleanup?;
private _subscribers;
constructor(create: CreateFunction<T>);
subscribe(subscriber: SubscribeFunction<T>): ISubscription;
}
export {};