@devgrid/netron
Version:
Event bus, streams and remote object invocation.
29 lines (28 loc) • 1.43 kB
TypeScript
import { Netron } from './netron';
import { Interface } from './interface';
import { Definition } from './definition';
import { EventSubscriber } from './types';
export declare abstract class AbstractPeer {
netron: Netron;
id: string;
protected interfaces: Map<string, {
instance: Interface;
refCount: number;
}>;
constructor(netron: Netron, id: string);
abstract set(defId: string, name: string, value: any): Promise<void>;
abstract get(defId: string, name: string): Promise<any>;
abstract call(defId: string, method: string, args: any[]): Promise<any>;
abstract subscribe(eventName: string, handler: EventSubscriber): Promise<void> | void;
abstract unsubscribe(eventName: string, handler: EventSubscriber): Promise<void> | void;
abstract exposeService(instance: any): Promise<Definition>;
abstract unexposeService(ctxId: string, releaseOriginated?: boolean): Promise<void>;
unexposeAllServices(): void;
abstract getServiceNames(): string[];
queryInterface<T>(serviceName: string): Promise<T>;
queryInterfaceByDefId<T>(defId: string, def?: Definition): Promise<T>;
releaseInterface<T>(iInstance: T): Promise<void>;
protected abstract releaseInterfaceInternal(iInstance: any): Promise<void>;
protected abstract getDefinitionById(defId: string): Definition;
protected abstract getDefinitionByServiceName(name: string): Definition;
}