01: /*
02: Copyright (C) 2003 Know Gate S.L. All rights reserved.
03: C/Oņa, 107 1š2 28050 Madrid (Spain)
04:
05: Redistribution and use in source and binary forms, with or without
06: modification, are permitted provided that the following conditions
07: are met:
08:
09: 1. Redistributions of source code must retain the above copyright
10: notice, this list of conditions and the following disclaimer.
11:
12: 2. The end-user documentation included with the redistribution,
13: if any, must include the following acknowledgment:
14: "This product includes software parts from hipergate
15: (http://www.hipergate.org/)."
16: Alternately, this acknowledgment may appear in the software itself,
17: if and wherever such third-party acknowledgments normally appear.
18:
19: 3. The name hipergate must not be used to endorse or promote products
20: derived from this software without prior written permission.
21: Products derived from this software may not be called hipergate,
22: nor may hipergate appear in their name, without prior written
23: permission.
24:
25: This library is distributed in the hope that it will be useful,
26: but WITHOUT ANY WARRANTY; without even the implied warranty of
27: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
28:
29: You should have received a copy of hipergate License with this code;
30: if not, visit http://www.hipergate.org or mail to info@hipergate.org
31: */
32:
33: package com.knowgate.scheduler;
34:
35: import java.util.LinkedList;
36:
37: /**
38: * <p>Memory FIFO Queue for job atoms pending of processing</p>
39: * @author Sergio Montoro Ten
40: * @version 1.0
41: */
42: public class AtomQueue extends LinkedList {
43: private int iMaxAtoms;
44:
45: /**
46: * Create an empty queue with a maximum of 1000 atoms
47: */
48: public AtomQueue() {
49: iMaxAtoms = 1000;
50: }
51:
52: /**
53: * Create an empty queue
54: * @param iMaxSize Maximum number of atoms that the queue can mantain in memory
55: */
56: public AtomQueue(int iMaxSize) {
57: iMaxAtoms = iMaxSize;
58: }
59:
60: // ----------------------------------------------------------
61:
62: /**
63: * @return Maximum number of atoms that the queue can mantain in memory
64: */
65: public int maxsize() {
66: return iMaxAtoms;
67: }
68:
69: // ----------------------------------------------------------
70:
71: /**
72: * <p>Add an atom to the end of the queue</p>
73: * @param oAtm Atom object to be added
74: */
75:
76: public synchronized void push(Atom oAtm) {
77: addLast(oAtm);
78: }
79:
80: // ----------------------------------------------------------
81:
82: /**
83: * <p>Pop first available atom from queue</p>
84: */
85:
86: public synchronized Atom pop() {
87: Atom oAtm;
88: if (this .size() > 0) {
89: oAtm = (Atom) getFirst();
90: removeFirst();
91: } else {
92: oAtm = null;
93: }
94: return oAtm;
95: } // pop
96:
97: } // AtomQueue
|