diff options
Diffstat (limited to 'src/org/gnunet/mq/MessageQueue.java')
-rw-r--r-- | src/org/gnunet/mq/MessageQueue.java | 41 |
1 files changed, 0 insertions, 41 deletions
diff --git a/src/org/gnunet/mq/MessageQueue.java b/src/org/gnunet/mq/MessageQueue.java deleted file mode 100644 index de08edf..0000000 --- a/src/org/gnunet/mq/MessageQueue.java +++ /dev/null | |||
@@ -1,41 +0,0 @@ | |||
1 | package org.gnunet.mq; | ||
2 | |||
3 | |||
4 | import org.gnunet.util.GnunetMessage; | ||
5 | |||
6 | import java.util.LinkedList; | ||
7 | |||
8 | /** | ||
9 | * General-purpose message queue | ||
10 | */ | ||
11 | public abstract class MessageQueue { | ||
12 | private LinkedList<Envelope> queued_envelopes = new LinkedList<>(); | ||
13 | protected Envelope current_envelope; | ||
14 | |||
15 | protected abstract void sendImmediate(Envelope ev); | ||
16 | |||
17 | public void send(GnunetMessage.Body body) { | ||
18 | send(new Envelope(body)); | ||
19 | } | ||
20 | |||
21 | public void send(Envelope ev) { | ||
22 | if (null == current_envelope) { | ||
23 | current_envelope = ev; | ||
24 | sendImmediate(current_envelope); | ||
25 | } else { | ||
26 | queued_envelopes.addLast(ev); | ||
27 | } | ||
28 | } | ||
29 | |||
30 | protected void reportMessageSent() { | ||
31 | if (null == current_envelope) | ||
32 | throw new AssertionError(); | ||
33 | current_envelope.invokeSentNotification(); | ||
34 | if (queued_envelopes.isEmpty()) | ||
35 | return; | ||
36 | current_envelope = queued_envelopes.pop(); | ||
37 | sendImmediate(current_envelope); | ||
38 | } | ||
39 | |||
40 | public abstract void destroy(); | ||
41 | } | ||