From 1aa0767453d2cc4b9c7b9001bfc8ae99566245d0 Mon Sep 17 00:00:00 2001 From: Alex Lee Date: Fri, 20 Jul 2012 01:01:33 -0400 Subject: [PATCH 1/3] First worker example --- example-workers.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 example-workers.js diff --git a/example-workers.js b/example-workers.js new file mode 100644 index 0000000..899f070 --- /dev/null +++ b/example-workers.js @@ -0,0 +1,14 @@ +H5 +.worker('/example/worker.js') +.send(data) +.error(function(event) { + console.log(event.message); + console.log(event.filename); + console.log(event.lineno); + event.preventDefault(); +}); +.receive(function(data) { + console.log(data); + console.log(this.__raw__.data === JSON.stringify(data)); +}) +.abort(); From 45a267dafc560c327510d288302f0431c28aa890 Mon Sep 17 00:00:00 2001 From: Alex Lee Date: Tue, 24 Jul 2012 17:25:37 -0400 Subject: [PATCH 2/3] Worker example, added the case for inside a Worker --- example-workers.js | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/example-workers.js b/example-workers.js index 899f070..d20de4e 100644 --- a/example-workers.js +++ b/example-workers.js @@ -1,14 +1,27 @@ -H5 +h5 .worker('/example/worker.js') .send(data) .error(function(event) { - console.log(event.message); - console.log(event.filename); - console.log(event.lineno); + console.error(event.message + " in " + event.filename + " at line " + event.lineno); event.preventDefault(); }); .receive(function(data) { console.log(data); - console.log(this.__raw__.data === JSON.stringify(data)); }) .abort(); + +// Inside the Worker +importScripts("core.h5ive.js", "worker.h5ive.js"); + +h5 +.worker(self) +.receive(function(data) { + var sqrt; + console.log(data); + sqrt = Math.sqrt(data); + + console.log(h5.worker(self) === this); + this.send(sqrt); + this.__raw__.postMessage(sqrt); +}); + From ab4a175f35fbb3c5b907a2f03e01f03decf1684e Mon Sep 17 00:00:00 2001 From: Alex Lee Date: Tue, 31 Jul 2012 12:07:14 -0400 Subject: [PATCH 3/3] First worker implementation --- worker.h5ive.js | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 worker.h5ive.js diff --git a/worker.h5ive.js b/worker.h5ive.js new file mode 100644 index 0000000..3d44795 --- /dev/null +++ b/worker.h5ive.js @@ -0,0 +1,54 @@ +/*! worker.h5ive.js | (c) Alex Lee | MIT License: http://getify.mit-license.org */ + +(function(h5) { + + if (!h5) { + throw new Error("worker.h5ive: core.h5ive required."); + } + + var _self = this.self; + + h5.worker = function(opts) { + var publicAPI, worker; + + if (typeof window === "undefined" && opts === _self) { + // Inside a Worker + worker = _self; + } + else if (typeof opts === "string" ) { + worker = new Worker(opts); + } + + function send(data) { + worker.postMessage(data); + return publicAPI; + } + + function receive(handler) { + worker.onmessage = function(e) { + handler.call(publicAPI, e.data, e); + }; + return publicAPI; + } + + function error(handler) { + worker.onerror = handler; + return publicAPI; + } + + function abort() { + worker.terminate(); + return publicAPI; + } + + publicAPI = { + __raw__ : worker, + send : send, + receive : receive, + error : error, + abort : abort + }; + + return publicAPI; + }; +}(this.h5));