gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r19433 - in gnunet-java/src/org/gnunet: construct util


From: gnunet
Subject: [GNUnet-SVN] r19433 - in gnunet-java/src/org/gnunet: construct util
Date: Thu, 26 Jan 2012 14:17:38 +0100

Author: dold
Date: 2012-01-26 14:17:37 +0100 (Thu, 26 Jan 2012)
New Revision: 19433

Modified:
   gnunet-java/src/org/gnunet/construct/Construct.java
   gnunet-java/src/org/gnunet/util/Resolver.java
Log:
message unions now used in resolver

Modified: gnunet-java/src/org/gnunet/construct/Construct.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/Construct.java 2012-01-26 13:12:03 UTC 
(rev 19432)
+++ gnunet-java/src/org/gnunet/construct/Construct.java 2012-01-26 13:17:37 UTC 
(rev 19433)
@@ -217,10 +217,13 @@
             List<Field> old_path = new ArrayList<Field>(path);
 
             path.add(field);
+            
+            Class old_c = c;
 
             Parser p = getParser(ct, this);
 
             path = old_path;
+            c = old_c;
             parser = new NestedParser(p, new LinkedList<Field>(frameSizePath), 
n.optional(), old_f);
         }
 

Modified: gnunet-java/src/org/gnunet/util/Resolver.java
===================================================================
--- gnunet-java/src/org/gnunet/util/Resolver.java       2012-01-26 13:12:03 UTC 
(rev 19432)
+++ gnunet-java/src/org/gnunet/util/Resolver.java       2012-01-26 13:17:37 UTC 
(rev 19433)
@@ -37,11 +37,29 @@
         public int direction;
         @UInt32
         public int domain;
+
+        @Union(tag="direction", optional = true)
+        public AddressUnion addr;
+    }
+    
+    public static interface AddressUnion extends MessageUnion {}
+
+    @UnionCase(GetMessage.DIRECTION_GET_IP)
+    public static class TextualAddress implements AddressUnion {
+        @ZeroTerminatedString
+        public String addr;
+    }
+
+
+    @UnionCase(GetMessage.DIRECTION_GET_NAME)
+    public static class NumericAddress implements AddressUnion {
         @ByteFill
         public byte[] addr;
     }
 
+    
 
+
     @MessageId(ResolverResponse.MSG_ID)
     public static class ResolverResponse implements Message {
         final static int MSG_ID = 5;
@@ -220,8 +238,11 @@
             throw new RuntimeException("invalid InetAddress");
         }
 
-        gmsg.addr = Arrays.copyOf(addr, 16);
+        NumericAddress nAddr = new NumericAddress();
+        nAddr.addr = Arrays.copyOf(addr, 16);
 
+        gmsg.addr = nAddr;
+
         gmsg.header.messageSize = Construct.getSize(gmsg);
         
         
@@ -277,10 +298,12 @@
         req.header.messageType = GetMessage.MSG_ID;
         req.direction = GetMessage.DIRECTION_GET_IP;
         req.domain = GetMessage.AF_UNSPEC;
-        byte[] addr = hostname.getBytes();
-        // add 0-byte
-        req.addr = Arrays.copyOf(addr, addr.length + 1);
 
+        TextualAddress textAddr = new TextualAddress();
+        textAddr.addr = hostname;
+
+        req.addr = textAddr;
+
         req.header.messageSize = Construct.getSize(req);
 
         logger.debug("" + req.header.messageSize);




reply via email to

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