home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 August / PCO0897.ISO / filesbbs / os2 / fp1os2.arj / OS2 / DATA / 49 / C / 0 / F_26836 / SJTimer.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-05-15  |  1.6 KB  |  74 lines

  1. import stardiv.tools.SjProtocolWindow;
  2.  
  3. public class SJTimer implements Runnable {
  4.    private Thread aTimerThread;
  5.    private boolean bTriggerEvent;
  6.    private boolean bTimerThreadRunning;
  7.    private boolean bTriggerEndless;
  8.    private boolean bStopTimer;
  9.    private int nNoOfTriggers;
  10.    private int nDelayIn_ms;
  11.  
  12.    public SJTimer(int var1) {
  13.       this(var1, 0);
  14.       this.bTriggerEndless = true;
  15.    }
  16.  
  17.    public SJTimer(int var1, int var2) {
  18.       this.bTriggerEvent = false;
  19.       this.bTimerThreadRunning = false;
  20.       this.bTriggerEndless = false;
  21.       this.bStopTimer = false;
  22.       this.nNoOfTriggers = var2;
  23.       this.nDelayIn_ms = var1;
  24.       this.aTimerThread = new Thread(this, "SJTimer-Thread");
  25.    }
  26.  
  27.    public final void StopTimer() {
  28.       this.bStopTimer = true;
  29.    }
  30.  
  31.    public final synchronized int WaitForTrigger() {
  32.       if (this.bTimerThreadRunning) {
  33.          return -1;
  34.       } else {
  35.          try {
  36.             while(!this.bTriggerEvent) {
  37.                SjProtocolWindow.AddWaitEvent(this, "SJTimer.WaitForTrigger()");
  38.                this.wait();
  39.                SjProtocolWindow.AddWaitEventDONE(this, "SJTimer.WaitForTrigger()");
  40.             }
  41.          } catch (InterruptedException var1) {
  42.          }
  43.  
  44.          this.bTriggerEvent = false;
  45.          return this.nNoOfTriggers;
  46.       }
  47.    }
  48.  
  49.    private final synchronized void TriggerEvent() {
  50.       this.bTriggerEvent = true;
  51.       SjProtocolWindow.AddNotifyEvent(this, "SJTimer.TriggerEvent()");
  52.       this.notifyAll();
  53.       SjProtocolWindow.AddNotifyEventDONE(this, "SJTimer.TriggerEvent()");
  54.    }
  55.  
  56.    public void run() {
  57.       this.bTimerThreadRunning = true;
  58.  
  59.       while(!this.bStopTimer && (this.bTriggerEndless || this.nNoOfTriggers > 0)) {
  60.          try {
  61.             Thread.sleep((long)this.nDelayIn_ms);
  62.             if (!this.bTriggerEndless) {
  63.                --this.nNoOfTriggers;
  64.             }
  65.  
  66.             this.TriggerEvent();
  67.          } catch (InterruptedException var1) {
  68.          }
  69.       }
  70.  
  71.       this.bTimerThreadRunning = false;
  72.    }
  73. }
  74.