@barchart/common-node-js
Version:
Common classes, utilities, and functions for building Node.js servers
60 lines (42 loc) • 1.25 kB
JavaScript
const log4js = require('log4js');
const Disposable = require('@barchart/common-js/lang/Disposable'),
promise = require('@barchart/common-js/lang/promise');
const Router = require('./Router');
module.exports = (() => {
'use strict';
const logger = log4js.getLogger('common-node/messaging/routers/LocalRouter');
class LocalRouter extends Router {
constructor(suppressExpressions) {
super(suppressExpressions);
this._requestHandlers = {};
}
_canRoute(messageType) {
return this._requestHandlers.hasOwnProperty(messageType);
}
_route(messageType, payload, timeout, forget) {
const responsePromise = promise.timeout(Promise.resolve()
.then(() => {
const handler = this._requestHandlers[messageType];
return handler(payload, messageType);
}), timeout);
if (forget) {
return Promise.resolve(null);
}
return responsePromise;
}
_register(messageType, handler) {
this._requestHandlers[messageType] = handler;
return Disposable.fromAction(() => {
delete this._requestHandlers[messageType];
});
}
_onDispose() {
this._requestHandlers = null;
logger.debug('Local router disposed');
}
toString() {
return '[LocalRouter]';
}
}
return LocalRouter;
})();