sdg-rpc
Version:
pomelo ts rpc
59 lines (58 loc) • 1.64 kB
TypeScript
/**
* 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 {};