home *** CD-ROM | disk | FTP | other *** search
- import stardiv.tools.HoldJavaEnvironment;
-
- class JScriptScheduler implements Runnable {
- public static Object aInUse = new Object();
- private static JScriptRuntimeInstance pActGlobRTI = null;
- private static Thread pRunThread = null;
- private static JSbxQueue pTaskQueue = null;
- public static JSbxQueue pRunningQueue = null;
- private static JScriptScheduler pScheduler = null;
- private static boolean bStopTaskThread;
- private static int nJScriptThreadId;
- private static JScriptScheduler pActTask;
- public static JScriptScheduler pWaitForRTI;
- private JScriptRunAsync aProcess;
- private boolean bForceAsync;
-
- private JScriptScheduler() {
- }
-
- public JScriptScheduler(JScriptRunAsync var1, boolean var2) {
- this.aProcess = var1;
- this.bForceAsync = var2;
- }
-
- public static final String DumpStaticMemory() {
- return null;
- }
-
- public static final void DoExecute(JScriptScheduler var0) {
- if (var0 == null) {
- do {
- Object var9 = aInUse;
- synchronized(var9) {
- JSbxQueue var3 = pRunningQueue;
- synchronized(var3){}
-
- try {
- if (pRunningQueue.NoOfElements() != 0) {
- var0 = (JScriptScheduler)pRunningQueue.Get();
- pWaitForRTI = var0;
- } else {
- var0 = null;
- }
- } catch (Throwable var6) {
- throw var6;
- }
- }
-
- if (var0 != null) {
- DoExecute(var0);
- }
- } while(var0 != null);
-
- } else {
- JScriptScheduler var1 = pActTask;
- pActTask = var0;
- if (var0.aProcess != null) {
- var0.aProcess.run();
- }
-
- pActTask = var1;
- }
- }
-
- public static JScriptRuntimeInstance SetActRTI(JScriptRuntimeInstance var0) {
- Object var1 = aInUse;
- synchronized(var1){}
-
- JScriptRuntimeInstance var4;
- try {
- JScriptRuntimeInstance var3 = pActGlobRTI;
- pActGlobRTI = var0;
- pWaitForRTI = null;
- var4 = var3;
- } catch (Throwable var6) {
- throw var6;
- }
-
- return var4;
- }
-
- public static void SuspendExecutionAndStart(JScriptScheduler var0) {
- Object var1 = aInUse;
- synchronized(var1){}
-
- try {
- if (Thread.currentThread() == pRunThread) {
- if (pActGlobRTI != null && !var0.bForceAsync) {
- pRunningQueue.Append(var0);
- pActGlobRTI.SuspendExecution();
- } else {
- pTaskQueue.Append(var0);
- }
- } else {
- pTaskQueue.Append(var0);
- }
- } catch (Throwable var3) {
- throw var3;
- }
-
- }
-
- public static void StopAllPendingAndNoneRecursiveScripts(Object var0) {
- JSbxQueue var1 = new JSbxQueue((Object)null);
- Object var2 = aInUse;
- synchronized(var2) {
- JSbxQueue var4 = pTaskQueue;
- synchronized(var4) {
- JSbxQueue var6 = new JSbxQueue((Object)null);
-
- while(pTaskQueue.NoOfElements() != 0) {
- Object var7 = pTaskQueue.Get();
- JScriptScheduler var8 = (JScriptScheduler)var7;
- JavaScript var9 = var8.aProcess.getDocManager();
- if (var9 == var0) {
- var1.Append(new CancelStruct(var8.aProcess, var9, var8.aProcess.GetAndResetCallbackID()));
- } else {
- var6.Append(var7);
- }
- }
-
- while(var6.NoOfElements() != 0) {
- Object var18 = var6.Get();
- pTaskQueue.Append(var18);
- }
-
- if (pActGlobRTI != null) {
- JavaScript var19 = pActGlobRTI.GetJSManager().GetJavaScriptObj();
- if (Thread.currentThread() != pRunThread && var19 == var0) {
- JSbxQueue var20 = pRunningQueue;
- synchronized(var20){}
-
- try {
- while(pRunningQueue.NoOfElements() != 0) {
- JScriptScheduler var10 = (JScriptScheduler)pRunningQueue.Get();
- var1.Append(new CancelStruct(var10.aProcess, var10.aProcess.aRP.aJSObj, var10.aProcess.GetAndResetCallbackID()));
- }
- } catch (Throwable var14) {
- throw var14;
- }
-
- pActGlobRTI.StopExecution();
- var1.Append(new CancelStruct(pActTask.aProcess, var19, pActTask.aProcess.GetAndResetCallbackID()));
- }
- }
- }
- }
-
- while(var1.NoOfElements() != 0) {
- CancelStruct var17 = (CancelStruct)var1.Get();
- var17.aJSInst.DoCallback(-10, "", var17.iCallbackId);
- var17.aTask.RemoveFromTaskList();
- }
-
- }
-
- public static void StopActiveScript() {
- if (pActGlobRTI != null) {
- pActGlobRTI.StopExecution();
- }
-
- }
-
- static int getJScriptThreadId() {
- return nJScriptThreadId;
- }
-
- public void run() {
- JScriptScheduler var5;
- for(nJScriptThreadId = HoldJavaEnvironment.getThreadId(); !bStopTaskThread; DoExecute(var5)) {
- var5 = null;
- var5 = (JScriptScheduler)pTaskQueue.Get();
- Object var2 = aInUse;
- synchronized(var2){}
-
- try {
- HoldJavaEnvironment.ResetNoCallThreadId(getJScriptThreadId());
- pWaitForRTI = var5;
- } catch (Throwable var4) {
- throw var4;
- }
- }
-
- }
-
- static {
- pScheduler = new JScriptScheduler();
- pTaskQueue = new JSbxQueue((Object)null);
- pRunningQueue = new JSbxQueue((Object)null);
- pRunThread = new Thread(pScheduler, "(JavaScript Task-Scheduler)");
- pRunThread.start();
- pActTask = null;
- pWaitForRTI = null;
- }
- }
-