diff options
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/gears/workerpool.js')
-rw-r--r-- | contexts/data/lib/closure-library/closure/goog/gears/workerpool.js | 240 |
1 files changed, 0 insertions, 240 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/gears/workerpool.js b/contexts/data/lib/closure-library/closure/goog/gears/workerpool.js deleted file mode 100644 index f1263ed..0000000 --- a/contexts/data/lib/closure-library/closure/goog/gears/workerpool.js +++ /dev/null @@ -1,240 +0,0 @@ -// Copyright 2007 The Closure Library Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS-IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/** - * @fileoverview This file implements a wrapper around the Gears WorkerPool - * with some extra features. - * - * @author arv@google.com (Erik Arvidsson) - */ - -goog.provide('goog.gears.WorkerPool'); -goog.provide('goog.gears.WorkerPool.Event'); -goog.provide('goog.gears.WorkerPool.EventType'); - -goog.require('goog.events.Event'); -goog.require('goog.events.EventTarget'); -goog.require('goog.gears'); -goog.require('goog.gears.Worker'); - - - -/** - * This class implements a wrapper around the Gears Worker Pool. - * - * @constructor - * @extends {goog.events.EventTarget} - */ -goog.gears.WorkerPool = function() { - goog.events.EventTarget.call(this); - - /** - * Map from thread id to worker object - * @type {Object} - * @private - */ - this.workers_ = {}; - - // If we are in a worker thread we get the global google.gears.workerPool, - // otherwise we create a new Gears WorkerPool using the factory - var workerPool = /** @type {GearsWorkerPool} */ - (goog.getObjectByName('google.gears.workerPool')); - if (workerPool) { - this.workerPool_ = workerPool; - } else { - // use a protected method to let the sub class override - this.workerPool_ = this.getGearsWorkerPool(); - } - - this.workerPool_.onmessage = goog.bind(this.handleMessage_, this); -}; -goog.inherits(goog.gears.WorkerPool, goog.events.EventTarget); - - -/** - * Enum for event types fired by the WorkerPool. - * @enum {string} - */ -goog.gears.WorkerPool.EventType = { - UNKNOWN_WORKER: 'uknown_worker' -}; - - -/** - * The Gears WorkerPool object. - * @type {GearsWorkerPool} - * @private - */ -goog.gears.WorkerPool.prototype.workerPool_ = null; - - -/** - * @return {GearsWorkerPool} A Gears WorkerPool object. - * @protected - */ -goog.gears.WorkerPool.prototype.getGearsWorkerPool = function() { - var factory = goog.gears.getFactory(); - return factory.create('beta.workerpool'); -}; - - -/** - * Sets a last-chance error handler for a worker pool. - * WARNING: This will only succeed from inside a worker thread. In main thread, - * use window.onerror handler. - * @param {function(!GearsErrorObject):boolean} fn An error handler function - * that gets passed an error object with message and line number attributes. - * Returns whether the error was handled. If true stops propagation. - * @param {Object=} opt_handler This object for the function. - */ -goog.gears.WorkerPool.prototype.setErrorHandler = function(fn, opt_handler) { - this.workerPool_.onerror = goog.bind(fn, opt_handler); -}; - - -/** - * Creates a new worker. - * @param {string} code The code to execute inside the worker. - * @return {goog.gears.Worker} The worker that was just created. - */ -goog.gears.WorkerPool.prototype.createWorker = function(code) { - var workerId = this.workerPool_.createWorker(code); - var worker = new goog.gears.Worker(this, workerId); - this.registerWorker(worker); - return worker; -}; - - -/** - * Creates a new worker from a URL. - * @param {string} url URL from which to get the code to execute inside the - * worker. - * @return {goog.gears.Worker} The worker that was just created. - */ -goog.gears.WorkerPool.prototype.createWorkerFromUrl = function(url) { - var workerId = this.workerPool_.createWorkerFromUrl(url); - var worker = new goog.gears.Worker(this, workerId); - this.registerWorker(worker); - return worker; -}; - - -/** - * Allows the worker who calls this to be used cross origin. - */ -goog.gears.WorkerPool.prototype.allowCrossOrigin = function() { - this.workerPool_.allowCrossOrigin(); -}; - - -/** - * Sends a message to a given worker. - * @param {*} message The message to send to the worker. - * @param {goog.gears.Worker} worker The worker to send the message to. - */ -goog.gears.WorkerPool.prototype.sendMessage = function(message, worker) { - this.workerPool_.sendMessage(message, worker.getId()); -}; - - -/** - * Callback when this worker recieves a message. - * @param {string} message The message that was sent. - * @param {number} senderId The ID of the worker that sent the message. - * @param {GearsMessageObject} messageObject An object containing all - * information about the message. - * @private - */ -goog.gears.WorkerPool.prototype.handleMessage_ = function(message, - senderId, - messageObject) { - if (!this.isDisposed()) { - var workers = this.workers_; - if (!workers[senderId]) { - // If the worker is unknown, dispatch an event giving users of the class - // the change to register the worker. - this.dispatchEvent(new goog.gears.WorkerPool.Event( - goog.gears.WorkerPool.EventType.UNKNOWN_WORKER, - senderId, - messageObject)); - } - - var worker = workers[senderId]; - if (worker) { - worker.handleMessage(messageObject); - } - } -}; - - -/** - * Registers a worker object. - * @param {goog.gears.Worker} worker The worker to register. - */ -goog.gears.WorkerPool.prototype.registerWorker = function(worker) { - this.workers_[worker.getId()] = worker; -}; - - -/** - * Unregisters a worker object. - * @param {goog.gears.Worker} worker The worker to unregister. - */ -goog.gears.WorkerPool.prototype.unregisterWorker = function(worker) { - delete this.workers_[worker.getId()]; -}; - - -/** @override */ -goog.gears.WorkerPool.prototype.disposeInternal = function() { - goog.gears.WorkerPool.superClass_.disposeInternal.call(this); - this.workerPool_ = null; - delete this.workers_; -}; - - - -/** - * Event used when the workerpool recieves a message - * @param {string} type The type of event. - * @param {number} senderId The id of the sender of the message. - * @param {GearsMessageObject} messageObject The message object. - * - * @constructor - * @extends {goog.events.Event} - */ -goog.gears.WorkerPool.Event = function( - type, senderId, messageObject) { - goog.events.Event.call(this, type); - - /** - * The id of the sender of the message. - * @type {number} - */ - this.senderId = senderId; - - /** - * The message sent from the worker. This is the same as the - * messageObject.body field and is here for convenience. - * @type {*} - */ - this.message = messageObject.body; - - /** - * The object containing all information about the message. - * @type {GearsMessageObject} - */ - this.messageObject = messageObject; -}; -goog.inherits(goog.gears.WorkerPool.Event, goog.events.Event); |