Subversion Repositories HomeAutomation

Rev

Go to most recent revision | Blame | Last modification | View Log | SVN | RSS feed

  1. /*
  2.  * MbPacketQueue.java
  3.  *
  4.  * Created on den 24 augusti 2003, 13:03
  5.  */
  6. package Macbeth.System;
  7.  
  8. import java.util.*;
  9.  
  10. /**
  11.  * This class represents a packet-queue, onto which incoming
  12.  * packets will be put, and from which kernels will fetch
  13.  * packets for processing.
  14.  * @author Jimmy
  15.  */
  16. public class MbPacketQueue {
  17.     //queue is implemented using a linked list
  18.     private LinkedList queue;
  19.  
  20.     /**
  21.      * Creates a new instance of MbPacketQueue.
  22.      */
  23.     public MbPacketQueue() {
  24.         queue = new LinkedList();
  25.     }
  26.  
  27.     /**
  28.      * Gets the size (=number of elements) of the queue.
  29.      * @return The number of elements currently enqueued.
  30.      */
  31.     synchronized public int getSize() {
  32.         return queue.size();
  33.     }
  34.  
  35.     /**
  36.      * Adds a packet to the queue.
  37.      * @param p The packet that should be added. In case of null, packet is ignored.
  38.      */
  39.     synchronized public void enqueue(MbPacket p) {
  40.         if (p!=null) {
  41.             queue.add(p);
  42.         }
  43.     }
  44.  
  45.     /**
  46.      * Extracts and removes a packet from the queue.
  47.      * @return The extracted packet. If queue is empty, return value is null.
  48.      */
  49.     synchronized public MbPacket dequeue() {
  50.         if (getSize()>0) {
  51.             return (MbPacket)queue.removeFirst();
  52.         } else {
  53.             return null;
  54.         }
  55.     }
  56. }
  57.