/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ 'use strict'; function MessageHandler(name, comObj) { this.name = name; this.comObj = comObj; var ah = this.actionHandler = {}; ah['console_log'] = [function(data) { console.log.apply(console, data); }]; ah['console_error'] = [function(data) { console.error.apply(console, data); }]; comObj.onmessage = function(event) { var data = event.data; if (data.action in ah) { var action = ah[data.action]; action[0].call(action[1], data.data); } else { throw 'Unkown action from worker: ' + data.action; } }; } MessageHandler.prototype = { on: function(actionName, handler, scope) { var ah = this.actionHandler; if (ah[actionName]) { throw "There is already an actionName called '" + actionName + "'"; } ah[actionName] = [handler, scope]; }, send: function(actionName, data) { this.comObj.postMessage({ action: actionName, data: data }); } };