zorigami
Version:
a package for managing web workers
50 lines • 2.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var _a;
var worker_constants_1 = require("../worker_constants");
var provide_worker_instance_1 = require("../main_thread_api/provide_worker_instance");
var provide_response_callbacks_1 = require("../shared/provide_response_callbacks");
/* need to import ResponseMessage type */
/*
what to do here
- type default_handler so that it is of the handler type
- make a dictionary type with an indexable interface and readonly properties
so that we can avoid using immutable.
-
*/
var default_handler = function (event, respond) {
throw new Error(JSON.stringify(event));
};
var default_main_sub_to_worker_api = (_a = {},
_a[worker_constants_1.RESPONSE_MESSAGE] = function (event) {
provide_response_callbacks_1.default.getResponseCallback(event.data.callback_guid)(event);
provide_response_callbacks_1.default.removeResponseCallback(event.data.callback_guid);
},
_a[worker_constants_1.EXPOSE_WORKER_API] = function (event) {
/* gets called when the worker is exposing it's api to the main thread */
var worker_name = event.data.worker_name;
var api_config = event.data.api_config;
provide_worker_instance_1.default.storeWorkerApi(worker_name, api_config);
provide_worker_instance_1.default.storeWorkerPortAPI(worker_name, api_config);
/* override respond here because the worker name will not be stored
yet when it is generated in dispatch_message_from_worker */
var worker_interfaces = provide_worker_instance_1.default.getWorkerInterface(worker_name);
if (worker_interfaces) {
var respond = worker_interfaces.createResponse(event);
respond({ event: 'done storing worker api on main thread' });
}
else {
var message = 'could not find response function for ';
throw new Error(message + "::" + worker_name);
}
},
_a);
exports.dispatch_message_from_worker = function (event) {
var worker_name = event.data.worker_name;
var worker_interfaces = provide_worker_instance_1.default.getWorkerInterface(worker_name);
if (worker_interfaces) {
var respond = worker_interfaces.createResponse(event);
(default_main_sub_to_worker_api[event.data.type] || default_handler)(event, respond);
}
};
//# sourceMappingURL=dispatch_message_from_worker.js.map