@devgrid/netron
Version:
A powerful TypeScript library for building distributed systems with event bus, streaming capabilities, and remote object invocation. Features WebSocket-based bidirectional communication between Node.js and browser environments, service discovery, and type
31 lines (30 loc) • 1.55 kB
TypeScript
import { Netron } from './netron';
import { Interface } from './interface';
import { Definition } from './definition';
import { Abilities, EventSubscriber } from './types';
export declare abstract class AbstractPeer {
netron: Netron;
id: string;
abilities: Abilities;
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>(qualifiedName: string): Promise<T>;
queryInterfaceByDefId<T>(defId: string, def?: Definition): T;
releaseInterface<T>(iInstance: T, released?: Set<string>): Promise<void>;
protected abstract releaseInterfaceInternal(iInstance: any): Promise<void>;
protected abstract getDefinitionById(defId: string): Definition;
protected abstract getDefinitionByServiceName(name: string): Definition;
protected findLatestServiceVersion(serviceName: string): Definition;
}