[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r21967 - in gnunet-java/src/org/gnunet: construct construct
From: |
gnunet |
Subject: |
[GNUnet-SVN] r21967 - in gnunet-java/src/org/gnunet: construct construct/parsers peerinfo |
Date: |
Wed, 13 Jun 2012 16:06:49 +0200 |
Author: dold
Date: 2012-06-13 16:06:49 +0200 (Wed, 13 Jun 2012)
New Revision: 21967
Modified:
gnunet-java/src/org/gnunet/construct/Construct.java
gnunet-java/src/org/gnunet/construct/parsers/ByteFillParser.java
gnunet-java/src/org/gnunet/construct/parsers/DoubleParser.java
gnunet-java/src/org/gnunet/construct/parsers/FillParser.java
gnunet-java/src/org/gnunet/construct/parsers/FixedSizeArrayParser.java
gnunet-java/src/org/gnunet/construct/parsers/FixedSizeByteArrayParser.java
gnunet-java/src/org/gnunet/construct/parsers/IntegerFillParser.java
gnunet-java/src/org/gnunet/construct/parsers/IntegerParser.java
gnunet-java/src/org/gnunet/construct/parsers/NestedParser.java
gnunet-java/src/org/gnunet/construct/parsers/Parser.java
gnunet-java/src/org/gnunet/construct/parsers/SequenceParser.java
gnunet-java/src/org/gnunet/construct/parsers/StringParser.java
gnunet-java/src/org/gnunet/construct/parsers/UnionParser.java
gnunet-java/src/org/gnunet/construct/parsers/VariableSizeArrayParser.java
gnunet-java/src/org/gnunet/peerinfo/HelloMessage.java
gnunet-java/src/org/gnunet/peerinfo/PeerInfo.java
Log:
implemented minimum/static size query in construct
Modified: gnunet-java/src/org/gnunet/construct/Construct.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/Construct.java 2012-06-13 13:56:49 UTC
(rev 21966)
+++ gnunet-java/src/org/gnunet/construct/Construct.java 2012-06-13 14:06:49 UTC
(rev 21967)
@@ -425,4 +425,16 @@
p.patch(m, p.getSize(m), null, m);
}
+ /**
+ * Get the minimum static size for the message, determinable even if the
message's members
+ * are not filled in.
+ *
+ * @param m the message of interest
+ * @return the static minimum size of the message
+ */
+ public int getStaticSize(Message m) {
+ Parser p = getParser(m.getClass());
+ return p.getStaticSize();
+ }
+
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/ByteFillParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/ByteFillParser.java
2012-06-13 13:56:49 UTC (rev 21966)
+++ gnunet-java/src/org/gnunet/construct/parsers/ByteFillParser.java
2012-06-13 14:06:49 UTC (rev 21967)
@@ -91,4 +91,10 @@
// the size field is contained in the frameObject
ReflectUtil.justSetInt(frameObject, frameSizePath, frameSize);
}
+
+ @Override
+ public int getStaticSize() {
+ // not known!
+ return 0;
+ }
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/DoubleParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/DoubleParser.java
2012-06-13 13:56:49 UTC (rev 21966)
+++ gnunet-java/src/org/gnunet/construct/parsers/DoubleParser.java
2012-06-13 14:06:49 UTC (rev 21967)
@@ -67,4 +67,9 @@
public void patch(Message m, int frameSize, List<Field> frameSizePath,
Message frameObj) {
// nothing to do here
}
+
+ @Override
+ public int getStaticSize() {
+ return Double.SIZE / 8;
+ }
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/FillParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/FillParser.java
2012-06-13 13:56:49 UTC (rev 21966)
+++ gnunet-java/src/org/gnunet/construct/parsers/FillParser.java
2012-06-13 14:06:49 UTC (rev 21967)
@@ -105,4 +105,10 @@
// todo: patch nested messages
}
+ @Override
+ public int getStaticSize() {
+ // not known
+ return 0;
+ }
+
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/FixedSizeArrayParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/FixedSizeArrayParser.java
2012-06-13 13:56:49 UTC (rev 21966)
+++ gnunet-java/src/org/gnunet/construct/parsers/FixedSizeArrayParser.java
2012-06-13 14:06:49 UTC (rev 21967)
@@ -95,4 +95,9 @@
elemParser.patch((Message) Array.get(arr, i), frameSize, null,
frameObj);
}
}
+
+ @Override
+ public int getStaticSize() {
+ return elemNumber * elemParser.getStaticSize();
+ }
}
Modified:
gnunet-java/src/org/gnunet/construct/parsers/FixedSizeByteArrayParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/FixedSizeByteArrayParser.java
2012-06-13 13:56:49 UTC (rev 21966)
+++ gnunet-java/src/org/gnunet/construct/parsers/FixedSizeByteArrayParser.java
2012-06-13 14:06:49 UTC (rev 21967)
@@ -63,4 +63,9 @@
public void patch(Message m, int frameSize, List<Field> frameSizePath,
Message frameObj) {
// nothing to do
}
+
+ @Override
+ public int getStaticSize() {
+ return elemNumber;
+ }
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/IntegerFillParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/IntegerFillParser.java
2012-06-13 13:56:49 UTC (rev 21966)
+++ gnunet-java/src/org/gnunet/construct/parsers/IntegerFillParser.java
2012-06-13 14:06:49 UTC (rev 21967)
@@ -34,7 +34,7 @@
private final int byteSize;
public IntegerFillParser(Field targetField,
- boolean signed, int byteSize ) {
+ boolean signed, int byteSize) {
this.targetField = targetField;
this.signed = signed;
@@ -82,4 +82,10 @@
public void patch(Message m, int frameSize, List<Field> frameSizePath,
Message frameObj) {
ReflectUtil.justSetInt(frameObj, frameSizePath, frameSize);
}
+
+ @Override
+ public int getStaticSize() {
+ // not known
+ return 0;
+ }
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/IntegerParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/IntegerParser.java
2012-06-13 13:56:49 UTC (rev 21966)
+++ gnunet-java/src/org/gnunet/construct/parsers/IntegerParser.java
2012-06-13 14:06:49 UTC (rev 21967)
@@ -82,4 +82,9 @@
public void patch(Message m, int frameSize, List<Field> frameSizePath,
Message frameObj) {
// nothing to do
}
+
+ @Override
+ public int getStaticSize() {
+ return byteSize;
+ }
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/NestedParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/NestedParser.java
2012-06-13 13:56:49 UTC (rev 21966)
+++ gnunet-java/src/org/gnunet/construct/parsers/NestedParser.java
2012-06-13 14:06:49 UTC (rev 21967)
@@ -95,4 +95,9 @@
}
}
+ @Override
+ public int getStaticSize() {
+ return nestedParser.getStaticSize();
+ }
+
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/Parser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/Parser.java 2012-06-13
13:56:49 UTC (rev 21966)
+++ gnunet-java/src/org/gnunet/construct/parsers/Parser.java 2012-06-13
14:06:49 UTC (rev 21967)
@@ -69,4 +69,10 @@
*/
public void patch(Message m, int frameSize, List<Field> frameSizePath,
Message frameObj);
+ /**
+ * Return a lower bound for the size of the message in bytes
+ *
+ * @return minimum static size of the message in bytes
+ */
+ int getStaticSize();
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/SequenceParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/SequenceParser.java
2012-06-13 13:56:49 UTC (rev 21966)
+++ gnunet-java/src/org/gnunet/construct/parsers/SequenceParser.java
2012-06-13 14:06:49 UTC (rev 21967)
@@ -81,6 +81,15 @@
}
}
+ @Override
+ public int getStaticSize() {
+ int accum = 0;
+ for (Parser p : childParsers) {
+ accum += p.getStaticSize();
+ }
+ return accum;
+ }
+
public void setFrameSizePath(List<Field> frameSizePath) {
this.myFrameSizePath = frameSizePath;
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/StringParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/StringParser.java
2012-06-13 13:56:49 UTC (rev 21966)
+++ gnunet-java/src/org/gnunet/construct/parsers/StringParser.java
2012-06-13 14:06:49 UTC (rev 21967)
@@ -128,4 +128,9 @@
// nothing to patch
}
+ @Override
+ public int getStaticSize() {
+ return optional ? 0 : 1;
+ }
+
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/UnionParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/UnionParser.java
2012-06-13 13:56:49 UTC (rev 21966)
+++ gnunet-java/src/org/gnunet/construct/parsers/UnionParser.java
2012-06-13 14:06:49 UTC (rev 21967)
@@ -111,4 +111,11 @@
unionTagField.set(ReflectUtil.followFieldPathToParent(unionTagPath, m),
getTag(m));
}
+
+ @Override
+ public int getStaticSize() {
+ // we can't say anything about the static size
+ // todo: in a more elaborate implementation, try all union members
+ return 0;
+ }
}
Modified:
gnunet-java/src/org/gnunet/construct/parsers/VariableSizeArrayParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/VariableSizeArrayParser.java
2012-06-13 13:56:49 UTC (rev 21966)
+++ gnunet-java/src/org/gnunet/construct/parsers/VariableSizeArrayParser.java
2012-06-13 14:06:49 UTC (rev 21967)
@@ -97,4 +97,9 @@
sizeField.set(m, size);
}
+ @Override
+ public int getStaticSize() {
+ return 0;
+ }
+
}
Modified: gnunet-java/src/org/gnunet/peerinfo/HelloMessage.java
===================================================================
--- gnunet-java/src/org/gnunet/peerinfo/HelloMessage.java 2012-06-13
13:56:49 UTC (rev 21966)
+++ gnunet-java/src/org/gnunet/peerinfo/HelloMessage.java 2012-06-13
14:06:49 UTC (rev 21967)
@@ -34,7 +34,6 @@
* 3) address expiration (GNUNET_TIME_AbsoluteNBO); possibly
* unaligned!)
* 4) address (address-length bytes; possibly unaligned!)
-
*
* @author Florian Dold
*/
Modified: gnunet-java/src/org/gnunet/peerinfo/PeerInfo.java
===================================================================
--- gnunet-java/src/org/gnunet/peerinfo/PeerInfo.java 2012-06-13 13:56:49 UTC
(rev 21966)
+++ gnunet-java/src/org/gnunet/peerinfo/PeerInfo.java 2012-06-13 14:06:49 UTC
(rev 21967)
@@ -20,10 +20,7 @@
package org.gnunet.peerinfo;
-import org.gnunet.util.Cancelable;
-import org.gnunet.util.Configuration;
-import org.gnunet.util.PeerIdentity;
-import org.gnunet.util.RelativeTime;
+import org.gnunet.util.*;
/**
* Interface to the service that maintains all known hosts.
@@ -31,15 +28,31 @@
* @author Florian Dold
*/
public class PeerInfo {
+ private Client client;
+ private RequestQueue requests;
+
+
public interface PeerIterator {
public void onPeer(PeerIdentity peerIdentity, HelloMessage hello);
public void onEnd();
}
- public PeerInfo(Configuration cfg) {
+ private class PeerInfoMessageReceiver implements MessageReceiver {
+ @Override
+ public void process(GnunetMessage.Body msg) {
+ }
+ @Override
+ public void handleError() {
+ }
}
+
+ public PeerInfo(Configuration cfg) {
+ client = new Client("peerinfo", cfg);
+ requests = new RequestQueue(client, new PeerInfoMessageReceiver());
+ }
+
public Cancelable iterate(RelativeTime timeout, PeerIterator iterator) {
return null;
}
@@ -51,4 +64,6 @@
public void disconnect() {
}
+
+
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r21967 - in gnunet-java/src/org/gnunet: construct construct/parsers peerinfo,
gnunet <=