aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/gnunet/util/MessageStreamTokenizer.java
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2013-10-21 18:48:51 +0000
committerFlorian Dold <florian.dold@gmail.com>2013-10-21 18:48:51 +0000
commit8ceb5e95568a0a5be9ca6fd28a31fe6b07e06f28 (patch)
treedffd85c26a583a68cce3435375263a51bf43618c /src/main/java/org/gnunet/util/MessageStreamTokenizer.java
parent4cbf5731c126695bbd964552b92e7ae9151561e1 (diff)
downloadgnunet-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.java11
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 }