diff options
author | Florian Dold <florian.dold@gmail.com> | 2013-10-21 18:48:51 +0000 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2013-10-21 18:48:51 +0000 |
commit | 8ceb5e95568a0a5be9ca6fd28a31fe6b07e06f28 (patch) | |
tree | dffd85c26a583a68cce3435375263a51bf43618c /src/main/java/org/gnunet/util/MessageStreamTokenizer.java | |
parent | 4cbf5731c126695bbd964552b92e7ae9151561e1 (diff) | |
download | gnunet-java-8ceb5e95568a0a5be9ca6fd28a31fe6b07e06f28.tar.gz gnunet-java-8ceb5e95568a0a5be9ca6fd28a31fe6b07e06f28.zip |
- use identity in voting
- group certificate tool instead of ca daemon
- consensus api fully implemented, consensus+testbed test
- authorities use consensus
- some progress on transport api
Diffstat (limited to 'src/main/java/org/gnunet/util/MessageStreamTokenizer.java')
-rw-r--r-- | src/main/java/org/gnunet/util/MessageStreamTokenizer.java | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/main/java/org/gnunet/util/MessageStreamTokenizer.java b/src/main/java/org/gnunet/util/MessageStreamTokenizer.java index 597be94..6efaf95 100644 --- a/src/main/java/org/gnunet/util/MessageStreamTokenizer.java +++ b/src/main/java/org/gnunet/util/MessageStreamTokenizer.java | |||
@@ -62,11 +62,17 @@ public class MessageStreamTokenizer { | |||
62 | logger.debug("dispatching message"); | 62 | logger.debug("dispatching message"); |
63 | if (found) { | 63 | if (found) { |
64 | GnunetMessage msg; | 64 | GnunetMessage msg; |
65 | int oldPos = buffer.position(); | ||
65 | try { | 66 | try { |
66 | msg = Construct.parseAs(buffer, GnunetMessage.class); | 67 | msg = Construct.parseAs(buffer, GnunetMessage.class); |
67 | } catch (OutOfMemoryError e) { | 68 | } catch (OutOfMemoryError e) { |
68 | throw new OutOfMemoryError("oom while parsing " + unionClass); | 69 | throw new OutOfMemoryError("oom while parsing " + unionClass); |
69 | } | 70 | } |
71 | int parsedSize = buffer.position() - oldPos; | ||
72 | if (parsedSize != msg.header.messageSize) { | ||
73 | throw new AssertionError("mismatch between parsed message and header for " + | ||
74 | msg.body.getClass()); | ||
75 | } | ||
70 | mstCalllback.onKnownMessage(msg); | 76 | mstCalllback.onKnownMessage(msg); |
71 | } else { | 77 | } else { |
72 | UnknownMessageBody b = new UnknownMessageBody(); | 78 | UnknownMessageBody b = new UnknownMessageBody(); |
@@ -82,14 +88,14 @@ public class MessageStreamTokenizer { | |||
82 | * @return true if message could be extracted, false if not enough data is available | 88 | * @return true if message could be extracted, false if not enough data is available |
83 | */ | 89 | */ |
84 | public boolean extractOne() { | 90 | public boolean extractOne() { |
85 | System.out.println("trying to extract message from buffer"); | ||
86 | if (msgh == null && buffer.position() >= 4) { | 91 | if (msgh == null && buffer.position() >= 4) { |
87 | // prepare for reading | 92 | // prepare for reading |
88 | buffer.flip(); | 93 | buffer.flip(); |
89 | msgh = Construct.parseAs(buffer, GnunetMessage.Header.class); | 94 | msgh = Construct.parseAs(buffer, GnunetMessage.Header.class); |
90 | // undo read | 95 | // undo read |
91 | buffer.position(0); | 96 | buffer.position(0); |
92 | logger.debug("got header in mst, (" + buffer.limit() + "/" + msgh.messageSize + " read)"); | 97 | logger.debug("got header in mst (t: " + msgh.messageType + ", s: " + msgh.messageSize + |
98 | " (" + buffer.limit() + "/" + msgh.messageSize + " read)"); | ||
93 | if (buffer.capacity() < msgh.messageSize) { | 99 | if (buffer.capacity() < msgh.messageSize) { |
94 | ByteBuffer newBuf = ByteBuffer.allocate(msgh.messageSize); | 100 | ByteBuffer newBuf = ByteBuffer.allocate(msgh.messageSize); |
95 | newBuf.put(buffer); | 101 | newBuf.put(buffer); |
@@ -120,6 +126,7 @@ public class MessageStreamTokenizer { | |||
120 | public int readFrom(ReadableByteChannel source, boolean oneShot) throws IOException { | 126 | public int readFrom(ReadableByteChannel source, boolean oneShot) throws IOException { |
121 | int n; | 127 | int n; |
122 | n = source.read(buffer); | 128 | n = source.read(buffer); |
129 | logger.debug("read {} bytes from channel", n); | ||
123 | if (oneShot) { | 130 | if (oneShot) { |
124 | extractOne(); | 131 | extractOne(); |
125 | } | 132 | } |