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
TypeScript
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;
}