gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r34221 - in gnunet-java/src/main: java/org/gnunet java/org/


From: gnunet
Subject: [GNUnet-SVN] r34221 - in gnunet-java/src/main: java/org/gnunet java/org/gnunet/peerstore java/org/gnunet/peerstore/messages resources/org/gnunet/construct
Date: Mon, 25 Aug 2014 00:44:35 +0200

Author: otarabai
Date: 2014-08-25 00:44:35 +0200 (Mon, 25 Aug 2014)
New Revision: 34221

Added:
   gnunet-java/src/main/java/org/gnunet/peerstore/
   gnunet-java/src/main/java/org/gnunet/peerstore/IterateRequest.java
   gnunet-java/src/main/java/org/gnunet/peerstore/Peerstore.java
   gnunet-java/src/main/java/org/gnunet/peerstore/PeerstoreReceiver.java
   gnunet-java/src/main/java/org/gnunet/peerstore/PeerstoreWatcher.java
   gnunet-java/src/main/java/org/gnunet/peerstore/StoreOption.java
   gnunet-java/src/main/java/org/gnunet/peerstore/WatchRequest.java
   gnunet-java/src/main/java/org/gnunet/peerstore/messages/
   
gnunet-java/src/main/java/org/gnunet/peerstore/messages/IterateEndMessage.java
   gnunet-java/src/main/java/org/gnunet/peerstore/messages/IterateMessage.java
   
gnunet-java/src/main/java/org/gnunet/peerstore/messages/IterateRecordMessage.java
   gnunet-java/src/main/java/org/gnunet/peerstore/messages/StoreMessage.java
   gnunet-java/src/main/java/org/gnunet/peerstore/messages/WatchMessage.java
   
gnunet-java/src/main/java/org/gnunet/peerstore/messages/WatchRecordMessage.java
Modified:
   gnunet-java/src/main/resources/org/gnunet/construct/MsgMap.txt
Log:
peerstore java port


Added: gnunet-java/src/main/java/org/gnunet/peerstore/IterateRequest.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/peerstore/IterateRequest.java          
                (rev 0)
+++ gnunet-java/src/main/java/org/gnunet/peerstore/IterateRequest.java  
2014-08-24 22:44:35 UTC (rev 34221)
@@ -0,0 +1,72 @@
+/*
+ This file is part of GNUnet.
+ (C) 2011, 2012 Christian Grothoff (and other contributing authors)
+
+ GNUnet is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNUnet; see the file COPYING.  If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+package org.gnunet.peerstore;
+
+import org.gnunet.mq.Envelope;
+import org.gnunet.peerstore.messages.IterateMessage;
+import org.gnunet.requests.Request;
+import org.gnunet.util.AbsoluteTimeMessage;
+import org.gnunet.util.PeerIdentity;
+
+class IterateRequest extends Request {
+       private final String sub_system;
+       private final PeerIdentity peer;
+       private final String key;
+       public final PeerstoreReceiver receiver;
+
+       public IterateRequest(String sub_system, PeerIdentity peer, String key,
+                       PeerstoreReceiver receiver) {
+               this.sub_system = sub_system;
+               this.peer = peer;
+               this.key = key;
+               this.receiver = receiver;
+       }
+
+       @Override
+       public Envelope assembleRequest() {
+               IterateMessage im = new IterateMessage();
+               im.sub_system_size = this.sub_system.length() + 1;
+               im.sub_system = this.sub_system;
+               if (null == this.peer) {
+                       im.peer_set = 0;
+                       im.peer = new PeerIdentity();
+               } else {
+                       im.peer_set = 1;
+                       im.peer = peer;
+               }
+               if (null == this.key) {
+                       im.key = null;
+                       im.key_size = 0;
+               } else {
+                       im.key_size = this.key.length() + 1;
+                       im.key = this.key;
+               }
+               im.value_size = 0;
+               im.value = new byte[0];
+               im.expiry = new AbsoluteTimeMessage();
+               im.options = 0;
+               return new Envelope(im);
+       }
+
+       public void cancel() {
+       }
+
+}

Added: gnunet-java/src/main/java/org/gnunet/peerstore/Peerstore.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/peerstore/Peerstore.java               
                (rev 0)
+++ gnunet-java/src/main/java/org/gnunet/peerstore/Peerstore.java       
2014-08-24 22:44:35 UTC (rev 34221)
@@ -0,0 +1,220 @@
+/*
+ This file is part of GNUnet.
+ (C) 2011, 2012 Christian Grothoff (and other contributing authors)
+
+ GNUnet is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNUnet; see the file COPYING.  If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+package org.gnunet.peerstore;
+
+import org.gnunet.peerstore.messages.IterateEndMessage;
+import org.gnunet.peerstore.messages.IterateRecordMessage;
+import org.gnunet.peerstore.messages.StoreMessage;
+import org.gnunet.peerstore.messages.WatchRecordMessage;
+import org.gnunet.requests.MatchingRequestContainer;
+import org.gnunet.requests.RequestIdentifier;
+import org.gnunet.requests.SequentialRequestContainer;
+import org.gnunet.requests.TimeoutHandler;
+import org.gnunet.util.*;
+
+/**
+ * API for the GNUnet peerstore service.
+ */
+public class Peerstore {
+
+       /**
+        * Client connecting us to the statistics service.
+        */
+       private Client client;
+
+       /**
+        * All request to the service for iterating records.
+        */
+       private final SequentialRequestContainer<IterateRequest> 
iterateRequests;
+
+       /**
+        * All requests to the service for watching a value.
+        */
+       private final MatchingRequestContainer<HashCode, WatchRequest> 
watchRequests;
+
+       /**
+        * Are we currently destroying the client?
+        */
+       private boolean destroyRequested;
+
+       /**
+        * Messages from the statistics service are dispatched to an instance of
+        * this class.
+        */
+       public class PeerstoreMessageReceiver extends RunaboutMessageReceiver {
+
+               public void visit(IterateRecordMessage m) {
+                       RequestIdentifier<IterateRequest> req = iterateRequests
+                                       .getRequestIdentifier();
+                       if (null != req)
+                               
req.getRequest().receiver.onReceive(m.sub_system, m.peer,
+                                               m.key, m.value, new 
AbsoluteTime(m.expiry.value));
+               }
+
+               public void visit(IterateEndMessage m) {
+                       RequestIdentifier<IterateRequest> req = iterateRequests
+                                       .getRequestIdentifier();
+                       if (null != req) {
+                               req.retire();
+                               req.getRequest().receiver.onDone();
+                       }
+               }
+
+               public void visit(WatchRecordMessage m) {
+                       RequestIdentifier<WatchRequest> ri = watchRequests
+                                       
.getRequestIdentifier(WatchRequest.getHash(m.sub_system,
+                                                       m.peer, m.key));
+                       WatchRequest r = ri.getRequest();
+                       if (null != r) {
+                               r.watcher.onReceive(m.sub_system, m.peer, 
m.key, m.value,
+                                               new 
AbsoluteTime(m.expiry.value));
+                       }
+               }
+
+               @Override
+               public void handleError() {
+                       if (null == client)
+                               throw new AssertionError();
+                       if (!destroyRequested) {
+                               client.reconnect();
+                               iterateRequests.restart();
+                               watchRequests.restart();
+                       }
+               }
+
+       }
+
+       /**
+        * Create a connection to the peerstore service.
+        * 
+        * @param cfg
+        *            configuration to use
+        */
+       public Peerstore(Configuration cfg) {
+               client = new Client("peerstore", cfg);
+               client.installReceiver(new PeerstoreMessageReceiver());
+               iterateRequests = new 
SequentialRequestContainer<IterateRequest>(client);
+               watchRequests = new MatchingRequestContainer<HashCode, 
WatchRequest>(
+                               client);
+       }
+
+       /**
+        * Store a new entry in the PEERSTORE. Note that stored entries can be 
lost
+        * in some cases such as power failure.
+        * 
+        * @param sub_system
+        *            name of the sub system
+        * @param peer
+        *            Peer Identity
+        * @param key
+        *            entry key
+        * @param value
+        *            entry value BLOB
+        * @param expiry
+        *            absolute time after which the entry is (possibly) deleted
+        * @param options
+        *            options specific to the storage operation
+        */
+       public void store(final String sub_system, final PeerIdentity peer,
+                       final String key, final byte[] value, AbsoluteTime 
expiry,
+                       StoreOption options) {
+               if (destroyRequested || client == null)
+                       throw new AssertionError("already destroyed");
+               StoreMessage sm = new StoreMessage();
+               sm.peer_set = 1;
+               sm.peer = peer;
+               sm.sub_system_size = sub_system.length() + 1;
+               sm.key_size = key.length() + 1;
+               sm.value_size = value.length;
+               sm.expiry = new AbsoluteTimeMessage(expiry);
+               sm.options = options.val;
+               sm.sub_system = sub_system;
+               sm.key = key;
+               sm.value = value;
+               client.send(sm);
+       }
+
+       /**
+        * Iterate over records matching supplied key information
+        * 
+        * @param sub_system
+        *            name of sub system
+        * @param peer
+        *            Peer identity (can be NULL)
+        * @param key
+        *            entry key string (can be NULL)
+        * @param timeout
+        *            time after which the iterate request is canceled
+        * @param receiver
+        *            Object that will receive request results
+        * @return Handle to iteration request
+        */
+       public Cancelable iterate(final String sub_system, final PeerIdentity 
peer,
+                       final String key, final RelativeTime timeout,
+                       final PeerstoreReceiver receiver) {
+               if (destroyRequested || client == null)
+                       throw new AssertionError("already destroyed");
+               RequestIdentifier<IterateRequest> identifier = iterateRequests
+                               .addRequest(new IterateRequest(sub_system, 
peer, key, receiver));
+               identifier.setTimeout(timeout, new TimeoutHandler() {
+
+                       @Override
+                       public void onTimeout() {
+                               receiver.onTimeout();
+
+                       }
+               });
+               return identifier;
+       }
+
+       /**
+        * Request watching a given key User will be notified with any new 
values
+        * added to key
+        * 
+        * @param sub_system
+        *            name of sub system
+        * @param peer
+        *            Peer identity
+        * @param key
+        *            entry key string
+        * @param watcher
+        *            Receiver for watch records
+        * @return Handle to watch request
+        */
+       public Cancelable watch(final String sub_system, final PeerIdentity 
peer,
+                       final String key, PeerstoreWatcher watcher) {
+               if (destroyRequested || null == client)
+                       throw new AssertionError("already destroyed");
+               WatchRequest r = new WatchRequest(sub_system, peer, key, 
watcher);
+               return watchRequests.addRequest(r.hash, r);
+       }
+
+       /**
+        * Destroy handle to the peerstore service.
+        */
+       public void destroy() { // TODO: imeplement syncfirst
+               if (destroyRequested)
+                       throw new AssertionError("already destroyed");
+               destroyRequested = true;
+               client.disconnect();
+               client = null;
+       }
+}

Added: gnunet-java/src/main/java/org/gnunet/peerstore/PeerstoreReceiver.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/peerstore/PeerstoreReceiver.java       
                        (rev 0)
+++ gnunet-java/src/main/java/org/gnunet/peerstore/PeerstoreReceiver.java       
2014-08-24 22:44:35 UTC (rev 34221)
@@ -0,0 +1,43 @@
+/*
+ This file is part of GNUnet.
+ (C) 2011, 2012 Christian Grothoff (and other contributing authors)
+
+ GNUnet is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNUnet; see the file COPYING.  If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+package org.gnunet.peerstore;
+
+import org.gnunet.util.AbsoluteTime;
+import org.gnunet.util.PeerIdentity;
+
+public interface PeerstoreReceiver {
+       /**
+        * Called when having received a peerstore record from the service.
+        */
+       public void onReceive(String sub_system, PeerIdentity peer, String key,
+                       byte[] value, AbsoluteTime expiry);
+
+       /**
+        * Called when peerstore request times out. Never called for watchers.
+        */
+       public void onTimeout();
+
+       /**
+        * Called when all values for the request have been received. Never 
called
+        * for watchers.
+        */
+       public void onDone();
+}

Added: gnunet-java/src/main/java/org/gnunet/peerstore/PeerstoreWatcher.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/peerstore/PeerstoreWatcher.java        
                        (rev 0)
+++ gnunet-java/src/main/java/org/gnunet/peerstore/PeerstoreWatcher.java        
2014-08-24 22:44:35 UTC (rev 34221)
@@ -0,0 +1,10 @@
+package org.gnunet.peerstore;
+
+import org.gnunet.util.AbsoluteTime;
+import org.gnunet.util.PeerIdentity;
+
+public interface PeerstoreWatcher {
+
+       public void onReceive(String sub_system, PeerIdentity peer, String key,
+                       byte[] value, AbsoluteTime expiry);
+}

Added: gnunet-java/src/main/java/org/gnunet/peerstore/StoreOption.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/peerstore/StoreOption.java             
                (rev 0)
+++ gnunet-java/src/main/java/org/gnunet/peerstore/StoreOption.java     
2014-08-24 22:44:35 UTC (rev 34221)
@@ -0,0 +1,43 @@
+/*
+ This file is part of GNUnet.
+ (C) 2011, 2012 Christian Grothoff (and other contributing authors)
+
+ GNUnet is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNUnet; see the file COPYING.  If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+package org.gnunet.peerstore;
+
+/**
+ * Options for storing values in PEERSTORE
+ */
+public enum StoreOption {
+       /**
+        * Possibly store multiple values under given key.
+        */
+       MULTIPLE(0),
+
+       /**
+        * Delete any previous values for the given key before storing the given
+        * value.
+        */
+       REPLACE(1);
+       
+    int val;
+
+    StoreOption(int val) {
+        this.val = val;
+    }
+}

Added: gnunet-java/src/main/java/org/gnunet/peerstore/WatchRequest.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/peerstore/WatchRequest.java            
                (rev 0)
+++ gnunet-java/src/main/java/org/gnunet/peerstore/WatchRequest.java    
2014-08-24 22:44:35 UTC (rev 34221)
@@ -0,0 +1,77 @@
+/*
+ This file is part of GNUnet.
+ (C) 2011, 2012 Christian Grothoff (and other contributing authors)
+
+ GNUnet is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNUnet; see the file COPYING.  If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+package org.gnunet.peerstore;
+
+import java.nio.ByteBuffer;
+
+import org.gnunet.mq.Envelope;
+import org.gnunet.peerstore.messages.WatchMessage;
+import org.gnunet.requests.Request;
+import org.gnunet.util.HashCode;
+import org.gnunet.util.PeerIdentity;
+
+class WatchRequest extends Request {
+       public final String sub_system;
+       public final PeerIdentity peer;
+       public final String key;
+       public final PeerstoreWatcher watcher;
+       public final HashCode hash;
+
+       public static HashCode getHash(String sub_system, PeerIdentity peer,
+                       String key) {
+               int block_size = 0;
+               block_size += sub_system.length() + 1;
+               block_size += peer.data.length;
+               block_size += key.length() + 1;
+
+               byte[] block = new byte[block_size];
+               ByteBuffer target = ByteBuffer.wrap(block);
+               target.put(sub_system.getBytes());
+               target.put((byte)'\0');
+               target.put(peer.data);
+               target.put(key.getBytes());
+               target.put((byte)'\0');
+
+               return HashCode.hash(block);
+       }
+
+       public WatchRequest(String sub_system, PeerIdentity peer, String key,
+                       PeerstoreWatcher watcher) {
+               this.sub_system = sub_system;
+               this.peer = peer;
+               this.key = key;
+               this.watcher = watcher;
+               this.hash = WatchRequest.getHash(sub_system, peer, key);
+       }
+
+       @Override
+       public Envelope assembleRequest() {
+               WatchMessage wm = new WatchMessage();
+               wm.keyhash = this.hash;
+               return new Envelope(wm);
+       }
+
+       @Override
+       public void cancel() {
+               // TODO: send a watch cancel request
+       }
+
+}

Added: 
gnunet-java/src/main/java/org/gnunet/peerstore/messages/IterateEndMessage.java
===================================================================
--- 
gnunet-java/src/main/java/org/gnunet/peerstore/messages/IterateEndMessage.java  
                            (rev 0)
+++ 
gnunet-java/src/main/java/org/gnunet/peerstore/messages/IterateEndMessage.java  
    2014-08-24 22:44:35 UTC (rev 34221)
@@ -0,0 +1,29 @@
+/*
+ This file is part of GNUnet.
+ (C) 2011, 2012 Christian Grothoff (and other contributing authors)
+
+ GNUnet is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNUnet; see the file COPYING.  If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+package org.gnunet.peerstore.messages;
+
+import org.gnunet.construct.UnionCase;
+import org.gnunet.util.GnunetMessage;
+
address@hidden(823)
+public class IterateEndMessage implements GnunetMessage.Body {
+
+}

Added: 
gnunet-java/src/main/java/org/gnunet/peerstore/messages/IterateMessage.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/peerstore/messages/IterateMessage.java 
                        (rev 0)
+++ gnunet-java/src/main/java/org/gnunet/peerstore/messages/IterateMessage.java 
2014-08-24 22:44:35 UTC (rev 34221)
@@ -0,0 +1,57 @@
+/*
+ This file is part of GNUnet.
+ (C) 2011, 2012 Christian Grothoff (and other contributing authors)
+
+ GNUnet is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNUnet; see the file COPYING.  If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+package org.gnunet.peerstore.messages;
+
+import org.gnunet.construct.FillWith;
+import org.gnunet.construct.NestedMessage;
+import org.gnunet.construct.UInt16;
+import org.gnunet.construct.UInt32;
+import org.gnunet.construct.UInt8;
+import org.gnunet.construct.UnionCase;
+import org.gnunet.construct.ZeroTerminatedString;
+import org.gnunet.util.AbsoluteTimeMessage;
+import org.gnunet.util.GnunetMessage;
+import org.gnunet.util.PeerIdentity;
+
address@hidden(821)
+public class IterateMessage implements GnunetMessage.Body {
+       @UInt16
+       public int peer_set;
+       @NestedMessage
+       public PeerIdentity peer;
+       @UInt16
+       public int sub_system_size;
+       @UInt16
+       public int key_size;
+       @UInt16
+       public int value_size;
+       @NestedMessage
+       public AbsoluteTimeMessage expiry;
+       @UInt32
+       public int options;
+       @ZeroTerminatedString
+       public String sub_system;
+       @ZeroTerminatedString(optional = true)
+       public String key;
+       @FillWith
+       @UInt8
+       public byte[] value;
+}

Added: 
gnunet-java/src/main/java/org/gnunet/peerstore/messages/IterateRecordMessage.java
===================================================================
--- 
gnunet-java/src/main/java/org/gnunet/peerstore/messages/IterateRecordMessage.java
                           (rev 0)
+++ 
gnunet-java/src/main/java/org/gnunet/peerstore/messages/IterateRecordMessage.java
   2014-08-24 22:44:35 UTC (rev 34221)
@@ -0,0 +1,57 @@
+/*
+ This file is part of GNUnet.
+ (C) 2011, 2012 Christian Grothoff (and other contributing authors)
+
+ GNUnet is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNUnet; see the file COPYING.  If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+package org.gnunet.peerstore.messages;
+
+import org.gnunet.construct.FillWith;
+import org.gnunet.construct.NestedMessage;
+import org.gnunet.construct.UInt16;
+import org.gnunet.construct.UInt32;
+import org.gnunet.construct.UInt8;
+import org.gnunet.construct.UnionCase;
+import org.gnunet.construct.ZeroTerminatedString;
+import org.gnunet.util.AbsoluteTimeMessage;
+import org.gnunet.util.GnunetMessage;
+import org.gnunet.util.PeerIdentity;
+
address@hidden(822)
+public class IterateRecordMessage implements GnunetMessage.Body {
+       @UInt16
+       public int peer_set;
+       @NestedMessage
+       public PeerIdentity peer;
+       @UInt16
+       public int sub_system_size;
+       @UInt16
+       public int key_size;
+       @UInt16
+       public int value_size;
+       @NestedMessage
+       public AbsoluteTimeMessage expiry;
+       @UInt32
+       public int options;
+       @ZeroTerminatedString
+       public String sub_system;
+       @ZeroTerminatedString
+       public String key;
+       @FillWith
+       @UInt8
+       public byte[] value;
+}

Added: gnunet-java/src/main/java/org/gnunet/peerstore/messages/StoreMessage.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/peerstore/messages/StoreMessage.java   
                        (rev 0)
+++ gnunet-java/src/main/java/org/gnunet/peerstore/messages/StoreMessage.java   
2014-08-24 22:44:35 UTC (rev 34221)
@@ -0,0 +1,57 @@
+/*
+ This file is part of GNUnet.
+ (C) 2011, 2012 Christian Grothoff (and other contributing authors)
+
+ GNUnet is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNUnet; see the file COPYING.  If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+package org.gnunet.peerstore.messages;
+
+import org.gnunet.construct.FillWith;
+import org.gnunet.construct.NestedMessage;
+import org.gnunet.construct.UInt16;
+import org.gnunet.construct.UInt32;
+import org.gnunet.construct.UInt8;
+import org.gnunet.construct.UnionCase;
+import org.gnunet.construct.ZeroTerminatedString;
+import org.gnunet.util.AbsoluteTimeMessage;
+import org.gnunet.util.GnunetMessage;
+import org.gnunet.util.PeerIdentity;
+
address@hidden(820)
+public class StoreMessage implements GnunetMessage.Body {
+       @UInt16
+       public int peer_set;
+       @NestedMessage
+       public PeerIdentity peer;
+       @UInt16
+       public int sub_system_size;
+       @UInt16
+       public int key_size;
+       @UInt16
+       public int value_size;
+       @NestedMessage
+       public AbsoluteTimeMessage expiry;
+       @UInt32
+       public int options;
+       @ZeroTerminatedString
+       public String sub_system;
+       @ZeroTerminatedString
+       public String key;
+       @FillWith
+       @UInt8
+       public byte[] value;
+}

Added: gnunet-java/src/main/java/org/gnunet/peerstore/messages/WatchMessage.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/peerstore/messages/WatchMessage.java   
                        (rev 0)
+++ gnunet-java/src/main/java/org/gnunet/peerstore/messages/WatchMessage.java   
2014-08-24 22:44:35 UTC (rev 34221)
@@ -0,0 +1,12 @@
+package org.gnunet.peerstore.messages;
+
+import org.gnunet.construct.NestedMessage;
+import org.gnunet.construct.UnionCase;
+import org.gnunet.util.GnunetMessage;
+import org.gnunet.util.HashCode;
+
address@hidden(824)
+public class WatchMessage implements GnunetMessage.Body {
+       @NestedMessage
+       public HashCode keyhash;
+}

Added: 
gnunet-java/src/main/java/org/gnunet/peerstore/messages/WatchRecordMessage.java
===================================================================
--- 
gnunet-java/src/main/java/org/gnunet/peerstore/messages/WatchRecordMessage.java 
                            (rev 0)
+++ 
gnunet-java/src/main/java/org/gnunet/peerstore/messages/WatchRecordMessage.java 
    2014-08-24 22:44:35 UTC (rev 34221)
@@ -0,0 +1,37 @@
+package org.gnunet.peerstore.messages;
+
+import org.gnunet.construct.FillWith;
+import org.gnunet.construct.NestedMessage;
+import org.gnunet.construct.UInt16;
+import org.gnunet.construct.UInt32;
+import org.gnunet.construct.UInt8;
+import org.gnunet.construct.UnionCase;
+import org.gnunet.construct.ZeroTerminatedString;
+import org.gnunet.util.AbsoluteTimeMessage;
+import org.gnunet.util.GnunetMessage;
+import org.gnunet.util.PeerIdentity;
+
address@hidden(825)
+public class WatchRecordMessage implements GnunetMessage.Body {
+       @UInt16
+       public int peer_set;
+       @NestedMessage
+       public PeerIdentity peer;
+       @UInt16
+       public int sub_system_size;
+       @UInt16
+       public int key_size;
+       @UInt16
+       public int value_size;
+       @NestedMessage
+       public AbsoluteTimeMessage expiry;
+       @UInt32
+       public int options;
+       @ZeroTerminatedString
+       public String sub_system;
+       @ZeroTerminatedString
+       public String key;
+       @FillWith
+       @UInt8
+       public byte[] value;
+}

Modified: gnunet-java/src/main/resources/org/gnunet/construct/MsgMap.txt
===================================================================
--- gnunet-java/src/main/resources/org/gnunet/construct/MsgMap.txt      
2014-08-24 22:42:36 UTC (rev 34220)
+++ gnunet-java/src/main/resources/org/gnunet/construct/MsgMap.txt      
2014-08-24 22:44:35 UTC (rev 34221)
@@ -1,15 +1,21 @@
 org.gnunet.util.Resolver$Address|0=org.gnunet.util.Resolver$TextualAddress
 org.gnunet.util.Resolver$Address|1=org.gnunet.util.Resolver$NumericAddress
+org.gnunet.util.GnunetMessage$Body|821=org.gnunet.peerstore.messages.IterateMessage
 
org.gnunet.util.GnunetMessage$Body|274=org.gnunet.cadet.messages.TunnelDestroyMessage
+org.gnunet.util.GnunetMessage$Body|820=org.gnunet.peerstore.messages.StoreMessage
 org.gnunet.util.GnunetMessage$Body|1=org.gnunet.util.TestMessage
 
org.gnunet.util.GnunetMessage$Body|273=org.gnunet.cadet.messages.TunnelCreateMessage
+org.gnunet.util.GnunetMessage$Body|823=org.gnunet.peerstore.messages.IterateEndMessage
 
org.gnunet.util.GnunetMessage$Body|272=org.gnunet.cadet.messages.ClientConnectMessage
+org.gnunet.util.GnunetMessage$Body|822=org.gnunet.peerstore.messages.IterateRecordMessage
 org.gnunet.util.GnunetMessage$Body|4=org.gnunet.util.Resolver$GetMessage
 org.gnunet.util.GnunetMessage$Body|5=org.gnunet.util.Resolver$ResolverResponse
 org.gnunet.util.GnunetMessage$Body|276=org.gnunet.cadet.RejectMessage
 org.gnunet.util.GnunetMessage$Body|10=org.gnunet.arm.messages.ResultMessage
 org.gnunet.util.GnunetMessage$Body|11=org.gnunet.arm.messages.StatusMessage
+org.gnunet.util.GnunetMessage$Body|825=org.gnunet.peerstore.messages.WatchRecordMessage
 
org.gnunet.util.GnunetMessage$Body|286=org.gnunet.cadet.messages.LocalAckMessage
+org.gnunet.util.GnunetMessage$Body|824=org.gnunet.peerstore.messages.WatchMessage
 org.gnunet.util.GnunetMessage$Body|13=org.gnunet.arm.messages.ListResultMessage
 org.gnunet.util.GnunetMessage$Body|285=org.gnunet.cadet.DataMessage
 org.gnunet.util.GnunetMessage$Body|17=org.gnunet.hello.HelloMessage
@@ -48,11 +54,11 @@
 
org.gnunet.util.GnunetMessage$Body|625=org.gnunet.identity.messages.ResultCodeMessage
 
org.gnunet.util.GnunetMessage$Body|624=org.gnunet.identity.messages.StartMessage
 
org.gnunet.util.GnunetMessage$Body|631=org.gnunet.identity.messages.DeleteMessage
+org.gnunet.util.GnunetMessage$Body|630=org.gnunet.identity.messages.RenameMessage
 org.gnunet.util.GnunetMessage$Body|323=org.gnunet.nse.UpdateMessage
-org.gnunet.util.GnunetMessage$Body|630=org.gnunet.identity.messages.RenameMessage
 
org.gnunet.util.GnunetMessage$Body|629=org.gnunet.identity.messages.CreateRequestMessage
+org.gnunet.util.GnunetMessage$Body|628=org.gnunet.identity.messages.SetDefaultMessage
 org.gnunet.util.GnunetMessage$Body|321=org.gnunet.nse.StartMessage
-org.gnunet.util.GnunetMessage$Body|628=org.gnunet.identity.messages.SetDefaultMessage
 org.gnunet.util.GnunetMessage$Body|332=org.gnunet.peerinfo.messages.InfoMessage
 org.gnunet.util.GnunetMessage$Body|333=org.gnunet.peerinfo.messages.InfoEnd
 
org.gnunet.util.GnunetMessage$Body|331=org.gnunet.peerinfo.messages.ListAllPeersMessage
@@ -103,4 +109,4 @@
 
org.gnunet.util.GnunetMessage$Body|483=org.gnunet.testbed.messages.ManagePeerServiceMessage
 org.gnunet.gns.records.RecordData|1=org.gnunet.gns.records.ARecordData
 org.gnunet.gns.records.RecordData|65536=org.gnunet.gns.records.PkeyRecordData
-# generated 2014/08/04 20:04:04
+# generated 2014/08/25 00:32:19




reply via email to

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