UNPKG

sdg-rpc

Version:

pomelo ts rpc

59 lines (58 loc) 1.64 kB
/** * rpc消息管理器 */ /// <reference types="node" /> import { EventEmitter } from 'events'; import { IClientFactory, IMailboxes, IMailStationOpts, IRpcServerId, IRpcServerInfo, IRpcServerInfos, IRpcServerMap, IStatus } from '..'; import { IRpcMsg } from '..'; interface IPending { msg: IRpcMsg; cb: Function; } interface IPendings { [key: string]: IPending[]; } export default class MailStation extends EventEmitter { mailboxFactory: IClientFactory; mailboxes: IMailboxes; servers: IRpcServerInfos; serversMap: IRpcServerMap; opts: IMailStationOpts; pendings: IPendings; connecting: IStatus; onlines: IStatus; constructor(opts: IMailStationOpts); start(): void; clearStation(): void; addServer(serverInfo: IRpcServerInfo): void; addServers(serverInfos: IRpcServerInfo[]): void; removeServer(id: IRpcServerId): void; removeServers(ids: IRpcServerId[]): void; replaceServers(serverInfos: IRpcServerInfo[]): void; /** * rpc消息推入mailbox * @param serverId 指定rpc server的id * @param msg 消息体 * @param cb */ dispatch(serverId: string, msg: IRpcMsg, cb: Function): any; /** * 正式连接远程服务,当有消息到该server时才建立链接 * @param serverId * @param cb */ private connect; /** * 当server未就绪时,先缓存消息 * @param serverId rpc server id * @param msg * @param cb */ private addToPending; /** * 当server就绪后,推送缓存中的消息 * @param serverId */ private flushPending; } export {};