summaryrefslogtreecommitdiff
path: root/includes/js/dojox/timing/ThreadPool.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/timing/ThreadPool.js')
-rw-r--r--includes/js/dojox/timing/ThreadPool.js157
1 files changed, 0 insertions, 157 deletions
diff --git a/includes/js/dojox/timing/ThreadPool.js b/includes/js/dojox/timing/ThreadPool.js
deleted file mode 100644
index 2166a7d..0000000
--- a/includes/js/dojox/timing/ThreadPool.js
+++ /dev/null
@@ -1,157 +0,0 @@
-if(!dojo._hasResource["dojox.timing.ThreadPool"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojox.timing.ThreadPool"] = true;
-dojo.provide("dojox.timing.ThreadPool");
-dojo.require("dojox.timing");
-
-dojo.experimental("dojox.timing.ThreadPool");
-
-// dojox.timing.Timer is included as part of _base
-/********************************************************************
- This is a port of the original System.Threading.ThreadPool from
- the f(m) class library.
-
- Donated to the Dojo toolkit by the author :)
-*********************************************************************/
-(function(){
- var t=dojox.timing;
- t.threadStates={
- UNSTARTED:"unstarted",
- STOPPED:"stopped",
- PENDING:"pending",
- RUNNING:"running",
- SUSPENDED:"suspended",
- WAITING:"waiting",
- COMPLETE:"complete",
- ERROR:"error"
- };
-
- // Before rar says a word, we actually *use* these numbers for a purpose :)
- t.threadPriorities={
- LOWEST:1,
- BELOWNORMAL:2,
- NORMAL:3,
- ABOVENORMAL:4,
- HIGHEST:5
- };
-
- t.Thread=function(/* Function */fn, /* dojox.timing.threadPriorities? */priority){
- var self=this;
- this.state=t.threadStates.UNSTARTED;
- this.priority=priority||t.threadPriorities.NORMAL;
- this.lastError=null;
- this.func=fn; // for lookup purposes.
- this.invoke=function(){
- self.state=t.threadStates.RUNNING;
- try{
- fn(this);
- self.state=t.threadStates.COMPLETE;
- }catch(e){
- self.lastError=e;
- self.state=t.threadStates.ERROR;
- }
- };
- };
-
- // TODO: allow for changing of maxThreads and tick interval
- t.ThreadPool=new (function(/* Number */mxthrs, /* Number */intvl){
- var self=this;
- var maxThreads=mxthrs;
- var availableThreads=maxThreads;
- var interval=intvl;
- var fireInterval=Math.floor((interval/2)/maxThreads);
- var queue=[];
- var timers=new Array(maxThreads+1);
- var timer=new dojox.timing.Timer();
- var invoke=function(){
- var tracker=timers[0]={};
- for(var i=0; i<timers.length; i++){
- window.clearTimeout(timers[i]);
- var thread=queue.shift();
- if(typeof(thread)=="undefined"){ break; }
- tracker["thread-"+i]=thread;
- timers[i]=window.setTimeout(thread.invoke,(fireInterval*i));
- }
- availableThreads=maxThreads-(i-1);
- };
-
- // public methods
- this.getMaxThreads=function(){ return maxThreads; };
- this.getAvailableThreads=function(){ return availableThreads; };
- this.getTickInterval=function(){ return interval; };
- this.queueUserWorkItem=function(/* Function || dojox.timing.Thread */fn){
- var item=fn;
- if(item instanceof Function){
- item=new t.Thread(item);
- }
- var idx=queue.length;
- for(var i=0; i<queue.length; i++){
- if(queue[i].priority<item.priority){
- idx=i;
- break;
- }
- }
- if(idx<queue.length){
- queue.splice(idx, 0, item);
- } else {
- queue.push(item);
- }
- return true;
- };
- this.removeQueuedUserWorkItem=function(/* Function || dojox.timing.Thread */item){
- if(item instanceof Function){
- var idx=-1;
- for(var i=0; i<queue.length; i++){
- if(queue[i].func==item){
- idx=i;
- break;
- }
- }
- if(idx>-1){
- queue.splice(idx,1);
- return true;
- }
- return false;
- }
-
- var idx=-1;
- for(var i=0; i<queue.length; i++){
- if(queue[i]==item){
- idx=i;
- break;
- }
- }
- if(idx>-1){
- queue.splice(idx,1);
- return true;
- }
- return false;
- };
- this.start=function(){ timer.start(); };
- this.stop=function(){ timer.stop(); };
- this.abort=function(){
- this.stop();
- for(var i=1; i<timers.length; i++){
- if(timers[i]){
- window.clearTimeout(timers[i]);
- }
- }
- for(var thread in timers[0]){
- this.queueUserWorkItem(thread);
- }
- timers[0]={};
- };
- this.reset=function(){
- this.abort();
- queue=[];
- };
- this.sleep=function(/* Number */nSleep){
- timer.stop();
- window.setTimeout(timer.start, nSleep);
- };
-
- // dedicate the timer to us.
- timer.onTick=self.invoke;
- })(16, 5000);
-})();
-
-}