From 8fe92b94ce5e1e2857d088752d94e19db7e3d8a8 Mon Sep 17 00:00:00 2001 From: Valerio Virgillito Date: Sun, 17 Jun 2012 22:31:44 -0700 Subject: montage v11 merge into ninja Signed-off-by: Valerio Virgillito --- node_modules/montage/require/worker.js | 62 ++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 node_modules/montage/require/worker.js (limited to 'node_modules/montage/require/worker.js') diff --git a/node_modules/montage/require/worker.js b/node_modules/montage/require/worker.js new file mode 100644 index 00000000..3b06aad2 --- /dev/null +++ b/node_modules/montage/require/worker.js @@ -0,0 +1,62 @@ + +var URL = require("core/mini-url"); + +exports.Worker = function (package, id) { + var worker = new Worker( + URL.resolve(module.location, 'worker-script.js') + ); + worker.postMessage({ + "type": "init", + "package": package, + "module": id + }) + worker.onmessage = function (event) { + // request module text + // handle URL resolution + // console log + // read a url + if (event.data.type === "console") { + console[event.data.method].apply(console, event.data.args); + } else if (event.data.type === "read") { + require.read(event.data.url) + .then(function (content) { + worker.postMessage({ + type: "read", + url: event.data.url, + content: content + }) + }, function (error) { + worker.postMessage({ + type: "read", + url: event.data.url, + error: error + }); + }) + .end(); + } else if (event.data.type === "forward") { + if (proxy.onmessage) { + proxy.onmessage({ + data: event.data.data + }); + } else { + // XXX + } + } else { + // XXX + } + }; + var proxy = { + postMessage: function (data) { + worker.postMessage({ + type: "forward", + data: data + }); + }, + onmessage: null, + terminate: function () { + return worker.terminate(); + } + }; + return proxy; +}; + -- cgit v1.2.3