blob: 7cba7b3071e51e71729fc1a1c9029a50bacd6d6d [file] [log] [blame]
// Generated by CoffeeScript 1.8.0
var MessageHandler, channelManager, serviceManager, utils,
__slice = [].slice;
utils = require('./utils');
channelManager = require('./channelManager');
serviceManager = require('./serviceManager');
utils.registerClass(MessageHandler = (function() {
function MessageHandler() {}
MessageHandler.prototype.handleMessage = function(channel, message) {
return this._serviceMethodInvoker(channel, message["interface"], message.method, message.args);
};
MessageHandler.prototype._serviceMethodInvoker = function(channel, intfName, method, args) {
var e, methodSignature, service;
methodSignature = "" + intfName + "." + method + "()";
service = serviceManager.get(intfName);
if (!service) {
return this._redirectToConnections(channel, intfName, method, args);
}
args = args.slice();
args.unshift(channel);
try {
return service[method].apply(service, args);
} catch (_error) {
e = _error;
utils.log("error running service method " + methodSignature + ": " + e);
return utils.log("stack:\n" + e.stack);
}
};
MessageHandler.prototype._redirectToConnections = function(channel, intfName, method, args) {
var connection, _i, _len, _ref, _results;
_ref = channel.connections;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
connection = _ref[_i];
_results.push(connection.sendMessage.apply(connection, [intfName, method].concat(__slice.call(args))));
}
return _results;
};
return MessageHandler;
})());
module.exports = new MessageHandler;