occaecatidicta
Version:
73 lines (63 loc) • 2.01 kB
text/typescript
/**
* Default mailbox factory
*/
import * as Mailbox from './mailboxes/mqtt-mailbox';
import { MailBox } from './mailboxes/mqtt-mailbox';
// let Ws2Mailbox from ('./mailboxes/ws2-mailbox');
// let WsMailbox from ('./mailboxes/ws-mailbox');
import {create as tcpMailBoxCreate} from './mailboxes/tcp-mailbox';
import {EventEmitter} from 'events';
import {Tracer} from '../util/tracer';
export interface MailBoxTimeoutCallback {
(tracer: Tracer , err: Error , resp ?: any): void;
}
export interface MailBoxOpts {
bufferMsg?: boolean;
keepalive?: number;
interval?: number;
timeout?: number;
context?: any;
pkgSize?: number;
ping?: number;
pong?: number;
}
export interface MailBoxMessage {
service: string;
method: string;
args: any[];
}
export interface IMailBox {
close(): void;
send(tracer: Tracer, msg: MailBoxMessage, opts: any, cb: MailBoxTimeoutCallback): void;
on(event: 'close', listener: (serverid: string) => void): this;
connect(tracer: Tracer, cb: (err?: Error) => void): void;
}
export interface IMailBoxFactory {
(serverInfo: {id: string, host: string, port: number}, opts: MailBoxOpts): IMailBox;
}
export interface MailBoxPkg {
id: string & number;
resp: any;
source: string;
seq: number;
}
/**
* default mailbox factory
*
* @param {Object} serverInfo single server instance info, {id, host, port, ...}
* @param {Object} opts construct parameters
* @return {Object} mailbox instancef
*/
export function createMqttMailBox (serverInfo: {id: string, host: string, port: number}, opts: MailBoxOpts): IMailBox {
// let mailbox = opts.mailbox || 'mqtt';
// let Mailbox = null;
// if (mailbox == 'ws') {
// Mailbox = WsMailbox;
// } else if (mailbox == 'ws2') {
// Mailbox = Ws2Mailbox;
// } else if (mailbox == 'mqtt') {
// Mailbox = MqttMailbox;
// }
return Mailbox.create(serverInfo, opts);
}
export const createTcpMailBox = tcpMailBoxCreate;