gnunet-svn
[Top][All Lists]
Advanced

[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() {
 
     }
+
+
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]