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

  1. import java.io.PrintStream;
  2. import stardiv.tools.SjProtocolWindow;
  3.  
  4. public class JSbxQueue {
  5.    private int nNoOfElementsInQueue;
  6.    private JSbxQueueElement aHead;
  7.    private JSbxQueueElement aEnd;
  8.  
  9.    public JSbxQueue(Object var1) {
  10.       SjProtocolWindow.AddUserEvent(this, "JSbxQueue() creator: " + var1);
  11.       this.Init();
  12.    }
  13.  
  14.    public synchronized void Append(Object var1) {
  15.       JSbxQueueElement var2 = new JSbxQueueElement(var1);
  16.       if (this.aEnd == null) {
  17.          this.aHead = var2;
  18.          this.aEnd = this.aHead;
  19.       } else {
  20.          this.aEnd.next = var2;
  21.          this.aEnd = var2;
  22.       }
  23.  
  24.       ++this.nNoOfElementsInQueue;
  25.       this.notify();
  26.    }
  27.  
  28.    public synchronized Object Get() {
  29.       try {
  30.          while(this.aHead == null) {
  31.             this.wait();
  32.          }
  33.       } catch (InterruptedException var2) {
  34.          return null;
  35.       }
  36.  
  37.       JSbxQueueElement var1 = this.aHead;
  38.       this.aHead = this.aHead.next;
  39.       --this.nNoOfElementsInQueue;
  40.       if (this.aHead == null) {
  41.          this.aEnd = null;
  42.       }
  43.  
  44.       return var1.aElement;
  45.    }
  46.  
  47.    public synchronized Object Peek() {
  48.       return this.aHead != null ? this.aHead.aElement : null;
  49.    }
  50.  
  51.    public synchronized int NoOfElements() {
  52.       return this.nNoOfElementsInQueue;
  53.    }
  54.  
  55.    public synchronized void Clear() {
  56.       this.Init();
  57.    }
  58.  
  59.    private void Init() {
  60.       this.aHead = null;
  61.       this.aEnd = null;
  62.       this.nNoOfElementsInQueue = 0;
  63.    }
  64.  
  65.    public void Dump(PrintStream var1) {
  66.       var1.println("DUMP JSbxQueue");
  67.       JSbxQueueElement var2 = this.aHead;
  68.  
  69.       for(int var3 = 0; var2 != null; var2 = var2.next) {
  70.          ++var3;
  71.          var1.println(var3 + " " + var2);
  72.       }
  73.  
  74.    }
  75. }
  76.