+++ /dev/null
-<html><head><title>/home/alan/gitlive/roojs1/Roo/util/TaskRunner.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
- * Based on:
- * Ext JS Library 1.1.1
- * Copyright(c) 2006-2007, Ext JS, LLC.
- *
- * Originally Released Under LGPL - original licence link has changed is not relivant.
- *
- * Fork - LGPL
- * <script type="text/javascript">
- */
-
-
-</span><span class="jsdoc-var">Roo.util.TaskRunner </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">interval</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">interval </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">interval </span><span class="jsdoc-syntax">|| 10;
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tasks </span><span class="jsdoc-syntax">= [], </span><span class="jsdoc-var">removeQueue </span><span class="jsdoc-syntax">= [];
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">= 0;
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">running </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
-
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">stopThread </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
- </span><span class="jsdoc-var">running </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-var">clearInterval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">= 0;
- };
-
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">startThread </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">running</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">running </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">setInterval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">runTasks</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">interval</span><span class="jsdoc-syntax">);
- }
- };
-
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">removeTask </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">task</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">removeQueue.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">task</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">task.onStop</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">task.onStop</span><span class="jsdoc-syntax">();
- }
- };
-
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">runTasks </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">removeQueue.length </span><span class="jsdoc-syntax">> 0){
- </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">removeQueue.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">< </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
- </span><span class="jsdoc-var">tasks.remove</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">removeQueue</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
- }
- </span><span class="jsdoc-var">removeQueue </span><span class="jsdoc-syntax">= [];
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tasks.length </span><span class="jsdoc-syntax">< 1){
- </span><span class="jsdoc-var">stopThread</span><span class="jsdoc-syntax">();
- </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
- }
- }
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">now </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Date</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.getTime</span><span class="jsdoc-syntax">();
- </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tasks.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">< </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; ++</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tasks</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">itime </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">now </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">t.taskRunTime</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">t.interval </span><span class="jsdoc-syntax"><= </span><span class="jsdoc-var">itime</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">rt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">t.run.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">t.scope </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">t.args </span><span class="jsdoc-syntax">|| [++</span><span class="jsdoc-var">t.taskRunCount</span><span class="jsdoc-syntax">]);
- </span><span class="jsdoc-var">t.taskRunTime </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">now</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rt </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">t.taskRunCount </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-var">t.repeat</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">removeTask</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
- }
- }
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">t.duration </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">t.duration </span><span class="jsdoc-syntax"><= (</span><span class="jsdoc-var">now </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">t.taskStartTime</span><span class="jsdoc-syntax">)){
- </span><span class="jsdoc-var">removeTask</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">);
- }
- }
- };
-
- </span><span class="jsdoc-comment">/**
- * Queues a new task.
- * @param {Object} task
- */
- </span><span class="jsdoc-var">this.start </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">task</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">tasks.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">task</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">task.taskStartTime </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Date</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.getTime</span><span class="jsdoc-syntax">();
- </span><span class="jsdoc-var">task.taskRunTime </span><span class="jsdoc-syntax">= 0;
- </span><span class="jsdoc-var">task.taskRunCount </span><span class="jsdoc-syntax">= 0;
- </span><span class="jsdoc-var">startThread</span><span class="jsdoc-syntax">();
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">task</span><span class="jsdoc-syntax">;
- };
-
- </span><span class="jsdoc-var">this.stop </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">task</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">removeTask</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">task</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">task</span><span class="jsdoc-syntax">;
- };
-
- </span><span class="jsdoc-var">this.stopAll </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
- </span><span class="jsdoc-var">stopThread</span><span class="jsdoc-syntax">();
- </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tasks.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">< </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tasks</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.onStop</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">tasks</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.onStop</span><span class="jsdoc-syntax">();
- }
- }
- </span><span class="jsdoc-var">tasks </span><span class="jsdoc-syntax">= [];
- </span><span class="jsdoc-var">removeQueue </span><span class="jsdoc-syntax">= [];
- };
-};
-
-</span><span class="jsdoc-var">Roo.TaskMgr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.util.TaskRunner</span><span class="jsdoc-syntax">();</span></code></body></html>
\ No newline at end of file