FreeWRL / FreeX3D 4.3.0
EAIAsyncQueue.java
1// copyright (c) 1997,1998 stephen f. white
2// Modified for EAI FreeWRL code. John Stewart CRC Canada 1999
3//
4// This program is free software; you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation; either version 2, or (at your option)
7// any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program; see the file COPYING. If not, write to
16// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
17
18package sai.eai;
19
20public class EAIAsyncQueue {
21 private EAIAsyncMessage head;
22 private EAIAsyncMessage tail;
23
24 public EAIAsyncQueue() {
25 head = tail = null;
26 }
27
28 public synchronized void enqueue(EAIAsyncMessage msg) {
29 msg.next = head;
30 msg.prev = null;
31 if (head == null) {
32 tail = msg;
33 } else {
34 head.prev = msg;
35 }
36 head = msg;
37 }
38
39 public synchronized EAIAsyncMessage dequeue() {
40 if (tail == null) return null;
41 EAIAsyncMessage msg = tail;
42 tail = tail.prev;
43 if (tail == null) {
44 head = null;
45 } else {
46 tail.next = null;
47 }
48 msg.prev = msg.next = null;
49 return msg;
50 }
51
52 public boolean isEmpty() {
53 return head == null;
54 }
55}