/* Copyright (c) 1997-2004
Ewgenij Gawrilow, Michael Joswig (Technische Universitaet Berlin, Germany)
http://www.math.tu-berlin.de/polymake, mailto:polymake@math.tu-berlin.de
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version: http://www.gnu.org/licenses/gpl.txt.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
$Project: polymake $$Id: MsgQueue.java 4714 2004-06-22 16:23:15Z gawrilow $
*/
package de.tuberlin.polymake.common;
import java.util.Vector;
/**
* This class implements a message queue of maximum length two.
* If the queue already contains two elements the last one is overwritten.
*
* @author Thilo Schröder
*/
public class MsgQueue {
protected Vector queue = new Vector(2);
/** create a new MsgQueue */
public MsgQueue() {
}
/**
* Get the first element of the queue.
*
*/
public synchronized Object front() {
return queue.firstElement();
}
/**
* Remove the first element of the queue.
*/
public synchronized void popFront() {
queue.remove(0);
}
/**
* If the size of the queue has reached two, the last element
* is overwritten, otherwise, the element is appended to the queue.
* @param obj object to be added to queue
*/
public synchronized void pushBack(Object obj) {
if (queue.size() == 2) {
queue.remove(1);
queue.add(1, obj);
} else {
queue.addElement(obj);
}
}
/**
* Tests if this MsgQueue is empty.
*/
public synchronized boolean isEmpty() {
return queue.isEmpty();
}
/**
* Remove all elements of this MsgQueue.
*/
public synchronized void clear() {
queue.clear();
}
/**
* Returns a string representation of this MsgQueue containing
* a string representation of all its elements.
*/
public synchronized String toString() {
return queue.toString();
}
}
syntax highlighted by Code2HTML, v. 0.9.1