home *** CD-ROM | disk | FTP | other *** search
- package netscape.application;
-
- import netscape.util.InconsistencyException;
-
- class TimerQueue implements Runnable, ApplicationObserver {
- Timer firstTimer;
- boolean running;
-
- public TimerQueue() {
- Application var1 = Application.application();
- var1.addObserver(this);
- if (var1.isRunning()) {
- this.start();
- }
-
- }
-
- synchronized void start() {
- if (this.running) {
- throw new InconsistencyException("Can't start a TimerQueue that is already running");
- } else {
- Thread var1 = new Thread(this, "TimerQueue");
-
- try {
- if (var1.getPriority() > 1) {
- var1.setPriority(var1.getPriority() - 1);
- }
-
- var1.setDaemon(true);
- } catch (SecurityException var2) {
- }
-
- var1.start();
- this.running = true;
- }
- }
-
- synchronized void stop() {
- this.running = false;
- this.notify();
- }
-
- synchronized void addTimer(Timer var1, long var2) {
- if (!var1.running) {
- Timer var4 = null;
-
- Timer var5;
- for(var5 = this.firstTimer; var5 != null && var5.expirationTime <= var2; var5 = var5.nextTimer) {
- var4 = var5;
- }
-
- if (var4 == null) {
- this.firstTimer = var1;
- } else {
- var4.nextTimer = var1;
- }
-
- var1.expirationTime = var2;
- var1.nextTimer = var5;
- var1.running = true;
- this.notify();
- }
- }
-
- synchronized void removeTimer(Timer var1) {
- if (var1.running) {
- Timer var3 = null;
- Timer var4 = this.firstTimer;
-
- boolean var2;
- for(var2 = false; var4 != null; var4 = var4.nextTimer) {
- if (var4 == var1) {
- var2 = true;
- break;
- }
-
- var3 = var4;
- }
-
- if (var2) {
- if (var3 == null) {
- this.firstTimer = var1.nextTimer;
- } else {
- var3.nextTimer = var1.nextTimer;
- }
-
- var1.expirationTime = 0L;
- var1.nextTimer = null;
- var1.running = false;
- }
- }
- }
-
- synchronized boolean containsTimer(Timer var1) {
- return var1.running;
- }
-
- synchronized long postExpiredTimers() {
- long var3;
- do {
- Timer var5 = this.firstTimer;
- if (var5 == null) {
- return 0L;
- }
-
- long var1 = System.currentTimeMillis();
- var3 = var5.expirationTime - var1;
- if (var3 <= 0L) {
- var5.post(var1);
- this.removeTimer(var5);
- if (var5.repeats()) {
- this.addTimer(var5, var1 + (long)var5.delay());
- }
-
- try {
- this.wait(1L);
- } catch (InterruptedException var6) {
- }
- }
- } while(var3 <= 0L);
-
- return var3;
- }
-
- public synchronized void run() {
- while(this.running) {
- long var1 = this.postExpiredTimers();
-
- try {
- this.wait(var1);
- } catch (InterruptedException var3) {
- }
- }
-
- }
-
- public synchronized String toString() {
- StringBuffer var1 = new StringBuffer();
- var1.append("TimerQueue (");
- Timer var2 = this.firstTimer;
-
- while(var2 != null) {
- var1.append(var2.toString());
- var2 = var2.nextTimer;
- if (var2 != null) {
- var1.append(", ");
- }
- }
-
- var1.append(")");
- return var1.toString();
- }
-
- public void focusDidChange(Application var1, View var2) {
- }
-
- public void currentDocumentDidChange(Application var1, Window var2) {
- }
-
- public void applicationDidPause(Application var1) {
- }
-
- public void applicationDidResume(Application var1) {
- }
-
- public synchronized void applicationDidStart(Application var1) {
- this.start();
- }
-
- public synchronized void applicationDidStop(Application var1) {
- this.stop();
- }
- }
-