UNPKG

netflux

Version:

Peer to peer isomorphic transport API based on WebRTC and WebSocket. Allows to create/join full mesh network

37 lines (36 loc) 1.28 kB
import { Observable } from 'rxjs'; import { Channel } from '../../Channel'; import { IMessage } from '../../proto/index'; import { WebChannel } from '../../WebChannel'; import { IMessageFactory, IWebChannelStream, Service } from '../Service'; export declare enum TopologyEnum { FULL_MESH = 0 } export declare enum TopologyState { CONSTRUCTING = 0, CONSTRUCTED = 1, IDLE = 2 } export declare abstract class Topology<OutMsg, InMsg extends OutMsg> extends Service<OutMsg, InMsg> { protected wcStream: IWebChannelStream<OutMsg, InMsg>; protected wc: WebChannel; private _state; private stateSubject; constructor(wc: WebChannel, serviceId: number, proto: IMessageFactory<OutMsg, InMsg>); readonly onState: Observable<TopologyState>; readonly state: TopologyState; setJoinedState(): void; protected setState(state: TopologyState): void; abstract readonly neighbors: Channel[]; } export interface ITopology { onState: Observable<TopologyState>; state: TopologyState; neighbors: Channel[]; setJoinedState(): void; send(msg: IMessage): void; forward(msg: IMessage): void; sendTo(msg: IMessage): void; leave(): void; onChannelClose(channel: Channel): void; }