1 /**
2
3 */
4 public class MessageQueue
5 {
6 /**
7
8 @param capacity
9 @precondition
10 */
11 public MessageQueue(int capacity)
12 {
13 elements = new Message[capacity];
14 count = 0;
15 head = 0;
16 tail = 0;
17 }
18
19 /**
20
21 @return
22 @precondition
23 */
24 public Message remove()
25 {
26 Message r = elements[head];
27 head = (head + 1) % elements.length;
28 count--;
29 return r;
30 }
31
32 /**
33
34 @param aMessage
35 @precondition
36 */
37 public void add(Message aMessage)
38 {
39 elements[tail] = aMessage;
40 tail = (tail + 1) % elements.length;
41 count++;
42 }
43
44 /**
45
46 @return
47 */
48 public int size()
49 {
50 return count;
51 }
52
53 /**
54
55 @return
56 */
57 public boolean isFull()
58 {
59 return count == elements.length;
60 }
61
62 /**
63
64 @return
65 @precondition
66 */
67 public Message peek()
68 {
69 return elements[head];
70 }
71
72 private Message[] elements;
73 private int head;
74 private int tail;
75 private int count;
76 }