[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r30391 - in gnunet-java: . src/main/java/org/gnunet/hello s
From: |
gnunet |
Subject: |
[GNUnet-SVN] r30391 - in gnunet-java: . src/main/java/org/gnunet/hello src/main/java/org/gnunet/peerinfo src/main/java/org/gnunet/transport src/main/java/org/gnunet/transport/callbacks src/main/java/org/gnunet/transport/messages src/main/java/org/gnunet/util src/main/java/org/gnunet/util/crypto src/main/resources/org/gnunet/construct src/test/java/org/gnunet src/test/java/org/gnunet/transport |
Date: |
Tue, 22 Oct 2013 02:00:54 +0200 |
Author: dold
Date: 2013-10-22 02:00:54 +0200 (Tue, 22 Oct 2013)
New Revision: 30391
Added:
gnunet-java/src/main/java/org/gnunet/transport/AddressQuery.java
gnunet-java/src/main/java/org/gnunet/transport/callbacks/OfferHelloContinuation.java
gnunet-java/src/main/java/org/gnunet/transport/messages/SetQuotaMessage.java
gnunet-java/src/test/java/org/gnunet/transport/
gnunet-java/src/test/java/org/gnunet/transport/TransportTest.java
Removed:
gnunet-java/src/main/java/org/gnunet/peerinfo/RsaPublicKeyBinaryEncoded.java
gnunet-java/src/main/java/org/gnunet/transport/AddressMonitor.java
Modified:
gnunet-java/ISSUES
gnunet-java/src/main/java/org/gnunet/hello/HelloMessage.java
gnunet-java/src/main/java/org/gnunet/transport/HelloAddress.java
gnunet-java/src/main/java/org/gnunet/transport/Transport.java
gnunet-java/src/main/java/org/gnunet/transport/callbacks/HelloUpdateCallback.java
gnunet-java/src/main/java/org/gnunet/transport/messages/AddressIterateResponseMessageContent.java
gnunet-java/src/main/java/org/gnunet/transport/messages/StartMessage.java
gnunet-java/src/main/java/org/gnunet/util/Client.java
gnunet-java/src/main/java/org/gnunet/util/crypto/EddsaPublicKey.java
gnunet-java/src/main/resources/org/gnunet/construct/MsgMap.txt
Log:
- transport implementation finished
- test case for transport getHello
- installing a client receiver grants scheduler lifeness
Modified: gnunet-java/ISSUES
===================================================================
--- gnunet-java/ISSUES 2013-10-21 23:48:01 UTC (rev 30390)
+++ gnunet-java/ISSUES 2013-10-22 00:00:54 UTC (rev 30391)
@@ -1,3 +1,7 @@
+transport:
+ * documentation for StartMessage seems totally wrong, am I missing something?
+
+
What now works:
* consensus+testbed testcase in pure Java
* group certificates and corresponding tool implemented
Modified: gnunet-java/src/main/java/org/gnunet/hello/HelloMessage.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/hello/HelloMessage.java
2013-10-21 23:48:01 UTC (rev 30390)
+++ gnunet-java/src/main/java/org/gnunet/hello/HelloMessage.java
2013-10-22 00:00:54 UTC (rev 30391)
@@ -21,7 +21,8 @@
package org.gnunet.hello;
import org.gnunet.construct.*;
-import org.gnunet.peerinfo.RsaPublicKeyBinaryEncoded;
+import org.gnunet.util.GnunetMessage;
+import org.gnunet.util.crypto.EddsaPublicKey;
/**
* A HELLO message is used to exchange information about
@@ -38,12 +39,13 @@
*
* @author Florian Dold
*/
-public class HelloMessage implements Message {
address@hidden(17)
+public class HelloMessage implements GnunetMessage.Body {
@UInt32
- public int reserved;
+ public int friendOnly;
@NestedMessage
- public RsaPublicKeyBinaryEncoded publicKey;
+ public EddsaPublicKey publicKey;
@FillWith @UInt8
public byte[] addresses;
Deleted:
gnunet-java/src/main/java/org/gnunet/peerinfo/RsaPublicKeyBinaryEncoded.java
===================================================================
---
gnunet-java/src/main/java/org/gnunet/peerinfo/RsaPublicKeyBinaryEncoded.java
2013-10-21 23:48:01 UTC (rev 30390)
+++
gnunet-java/src/main/java/org/gnunet/peerinfo/RsaPublicKeyBinaryEncoded.java
2013-10-22 00:00:54 UTC (rev 30391)
@@ -1,56 +0,0 @@
-/*
- 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.peerinfo;
-
-import org.gnunet.construct.FixedSizeIntegerArray;
-import org.gnunet.construct.Message;
-import org.gnunet.construct.UInt16;
-import org.gnunet.construct.UInt8;
-
-/**
- * @author Florian Dold
- */
-public class RsaPublicKeyBinaryEncoded implements Message {
- public static final int GNUNET_CRYPTO_RSA_KEY_LENGTH = 258;
-
- /**
- * In big-endian, must be GNUNET_CRYPTO_RSA_KEY_LENGTH+4
- */
- @UInt16
- public int len;
- /**
- * Size of n in key; in big-endian!
- */
- @UInt16
- public int sizen;
-
- /**
- * The key itself, contains n followed by e.
- */
- @FixedSizeIntegerArray(length =
RsaPublicKeyBinaryEncoded.GNUNET_CRYPTO_RSA_KEY_LENGTH, signed = false, bitSize
= 8)
- public byte[] key;
-
- /**
- * Padding.
- */
- @UInt8
- public byte reserved;
-}
Deleted: gnunet-java/src/main/java/org/gnunet/transport/AddressMonitor.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/transport/AddressMonitor.java
2013-10-21 23:48:01 UTC (rev 30390)
+++ gnunet-java/src/main/java/org/gnunet/transport/AddressMonitor.java
2013-10-22 00:00:54 UTC (rev 30391)
@@ -1,153 +0,0 @@
-/*
- This file is part of GNUnet.
- (C) 2012, 2013 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.transport;
-
-import org.gnunet.transport.callbacks.PeerAddressListCallback;
-import org.gnunet.transport.callbacks.PeerAddressMonitorCallback;
-import org.gnunet.transport.messages.AddressIterateMessage;
-import org.gnunet.transport.messages.AddressIterateResponseMessage;
-import org.gnunet.transport.messages.BlacklistInitMessage;
-import org.gnunet.util.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Get active addresses of peers.
- */
-public class AddressMonitor {
- private static final Logger logger = LoggerFactory
- .getLogger(AddressMonitor.class);
- private final boolean oneShot;
- private final PeerIdentity peerIdentity;
- private final PeerAddressMonitorCallback monitorCallback;
- private final PeerAddressListCallback listCallback;
- /**
- * Client connecting to the transport service.
- */
- private Client client;
-
-
- private final class AddressMonitorReceiver extends RunaboutMessageReceiver
{
- public void visit(AddressIterateResponseMessage m) {
- if (m.content == null) {
- // uglyness in the api, when using one-shot the service
- // may send a second message indicating end of list.
- if (listCallback != null) {
- listCallback.onDone();
- } else {
- client.reconnect();
- sendInitMessage();
- }
- return;
- }
- if (listCallback != null) {
- if (m.content.addrlen == 0 && m.content.pluginlen == 0) {
- logger.warn("empty peer address list item");
- } else {
- HelloAddress helloAddress = new HelloAddress();
- helloAddress.peer = m.content.peerIdentity;
- // FIXME: address and plugin
- listCallback.onPeerAddress(helloAddress);
- }
- } else {
- if (m.content.addrlen == 0 && m.content.pluginlen == 0) {
- monitorCallback.onPeerDisconnect(m.content.peerIdentity);
- } else {
- HelloAddress helloAddress = new HelloAddress();
- helloAddress.peer = m.content.peerIdentity;
- // FIXME: address and plugin
- monitorCallback.onPeerAddress(helloAddress);
- }
- }
- }
- @Override
- public void handleError() {
- client.reconnect();
- client.send(new BlacklistInitMessage());
- }
- }
-
- /**
- *
- * @param configuration configuration to use for connecting to
- * the transport service
- * @param peerIdentity peer identity to monitor addresses of, null
- * to monitor addresses of all connected peers
- * @param peerAddressCallback callback to call when receiving an address
- * for the specified peer
- */
- public AddressMonitor(Configuration configuration,
- PeerIdentity peerIdentity,
- PeerAddressMonitorCallback peerAddressCallback) {
- this.oneShot = false;
- this.peerIdentity = peerIdentity;
- this.monitorCallback = peerAddressCallback;
- this.listCallback = null;
-
- client = new Client("transport", configuration);
- client.send(new BlacklistInitMessage());
- client.installReceiver(new AddressMonitorReceiver());
-
- createAndInitClient(configuration);
- }
-
- /**
- *
- * @param configuration configuration to use for connecting to
- * the transport service
- * @param peerIdentity peer identity to monitor addresses of, null
- * to monitor addresses of all connected peers
- * @param listCallback callback to call when receiving an address
- * for the specified peer
- */
- public AddressMonitor(Configuration configuration,
- PeerIdentity peerIdentity,
- PeerAddressListCallback listCallback) {
- this.oneShot = true;
- this.peerIdentity = peerIdentity;
- this.listCallback = listCallback;
- this.monitorCallback = null;
-
- createAndInitClient(configuration);
-
- }
-
- private void createAndInitClient(Configuration configuration) {
- client = new Client("transport", configuration);
- client.send(new BlacklistInitMessage());
- client.installReceiver(new AddressMonitorReceiver());
- sendInitMessage();
- }
-
- private void sendInitMessage() {
- AddressIterateMessage m = new AddressIterateMessage();
- m.oneShot = oneShot;
- if (peerIdentity == null) {
- m.peer = new PeerIdentity();
- } else {
- m.peer = peerIdentity;
- }
- // value seems to be deprecated in the C api, we're not using
- // service-managed timeouts anyway, so send FOREVER
- m.timeout = AbsoluteTime.FOREVER.asMessage();
- client.send(m);
- }
-}
Copied: gnunet-java/src/main/java/org/gnunet/transport/AddressQuery.java (from
rev 30387, gnunet-java/src/main/java/org/gnunet/transport/AddressMonitor.java)
===================================================================
--- gnunet-java/src/main/java/org/gnunet/transport/AddressQuery.java
(rev 0)
+++ gnunet-java/src/main/java/org/gnunet/transport/AddressQuery.java
2013-10-22 00:00:54 UTC (rev 30391)
@@ -0,0 +1,157 @@
+/*
+ This file is part of GNUnet.
+ (C) 2012, 2013 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.transport;
+
+import org.gnunet.transport.callbacks.PeerAddressListCallback;
+import org.gnunet.transport.callbacks.PeerAddressMonitorCallback;
+import org.gnunet.transport.messages.AddressIterateMessage;
+import org.gnunet.transport.messages.AddressIterateResponseMessage;
+import org.gnunet.transport.messages.BlacklistInitMessage;
+import org.gnunet.util.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Get active addresses of peers.
+ */
+public class AddressQuery {
+ private static final Logger logger = LoggerFactory
+ .getLogger(AddressQuery.class);
+ private final boolean oneShot;
+ private final PeerIdentity peerIdentity;
+ private final PeerAddressMonitorCallback monitorCallback;
+ private final PeerAddressListCallback listCallback;
+ /**
+ * Client connecting to the transport service.
+ */
+ private Client client;
+
+
+ private final class AddressMonitorReceiver extends RunaboutMessageReceiver
{
+ public void visit(AddressIterateResponseMessage m) {
+ if (m.content == null) {
+ // uglyness in the api, when using one-shot the service
+ // may send a second message indicating end of list.
+ if (listCallback != null) {
+ listCallback.onDone();
+ } else {
+ client.reconnect();
+ sendInitMessage();
+ }
+ return;
+ }
+ if (listCallback != null) {
+ if (m.content.addrLen == 0 && m.content.pluginLen == 0) {
+ logger.warn("empty peer address list item");
+ } else {
+ HelloAddress helloAddress = new HelloAddress();
+ helloAddress.peer = m.content.peerIdentity;
+ // FIXME: address and plugin
+ listCallback.onPeerAddress(helloAddress);
+ }
+ } else {
+ if (m.content.addrLen == 0 && m.content.pluginLen == 0) {
+ monitorCallback.onPeerDisconnect(m.content.peerIdentity);
+ } else {
+ HelloAddress helloAddress = new HelloAddress();
+ helloAddress.peer = m.content.peerIdentity;
+ // FIXME: address and plugin
+ monitorCallback.onPeerAddress(helloAddress);
+ }
+ }
+ }
+ @Override
+ public void handleError() {
+ client.reconnect();
+ client.send(new BlacklistInitMessage());
+ }
+ }
+
+ /**
+ * Monitor active addresses of the given peer, or of all peers if 'null' is
+ * passed as peer identity.
+ *
+ * @param configuration configuration to use for connecting to
+ * the transport service
+ * @param peerIdentity peer identity to monitor addresses of, null
+ * to monitor addresses of all connected peers
+ * @param peerAddressCallback callback to call when receiving an address
+ * for the specified peer
+ */
+ public AddressQuery(Configuration configuration,
+ PeerIdentity peerIdentity,
+ PeerAddressMonitorCallback peerAddressCallback) {
+ this.oneShot = false;
+ this.peerIdentity = peerIdentity;
+ this.monitorCallback = peerAddressCallback;
+ this.listCallback = null;
+
+ client = new Client("transport", configuration);
+ client.send(new BlacklistInitMessage());
+ client.installReceiver(new AddressMonitorReceiver());
+
+ createAndInitClient(configuration);
+ }
+
+ /**
+ * Monitor active addresses of the given peer, or of all peers if 'null' is
+ * passed as peer identity.
+ *
+ * @param configuration configuration to use for connecting to
+ * the transport service
+ * @param peerIdentity peer identity to monitor addresses of, null
+ * to monitor addresses of all connected peers
+ * @param listCallback callback to call when receiving an address
+ * for the specified peer
+ */
+ public AddressQuery(Configuration configuration,
+ PeerIdentity peerIdentity,
+ PeerAddressListCallback listCallback) {
+ this.oneShot = true;
+ this.peerIdentity = peerIdentity;
+ this.listCallback = listCallback;
+ this.monitorCallback = null;
+
+ createAndInitClient(configuration);
+
+ }
+
+ private void createAndInitClient(Configuration configuration) {
+ client = new Client("transport", configuration);
+ client.send(new BlacklistInitMessage());
+ client.installReceiver(new AddressMonitorReceiver());
+ sendInitMessage();
+ }
+
+ private void sendInitMessage() {
+ AddressIterateMessage m = new AddressIterateMessage();
+ m.oneShot = oneShot;
+ if (peerIdentity == null) {
+ m.peer = new PeerIdentity();
+ } else {
+ m.peer = peerIdentity;
+ }
+ // value seems to be deprecated in the C api, we're not using
+ // service-managed timeouts anyway, so send FOREVER
+ m.timeout = AbsoluteTime.FOREVER.asMessage();
+ client.send(m);
+ }
+}
Modified: gnunet-java/src/main/java/org/gnunet/transport/HelloAddress.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/transport/HelloAddress.java
2013-10-21 23:48:01 UTC (rev 30390)
+++ gnunet-java/src/main/java/org/gnunet/transport/HelloAddress.java
2013-10-22 00:00:54 UTC (rev 30391)
@@ -22,6 +22,22 @@
import org.gnunet.util.PeerIdentity;
+
+/**
+ * An address for communicating with a peer.
+ */
public class HelloAddress {
+ /**
+ * For which peer is this an address?
+ */
public PeerIdentity peer;
+ /**
+ * Name of the transport plugin enabling the communication using
+ * this address.
+ */
+ String transportName;
+ /**
+ * Binary representation of the address (plugin-specific).
+ */
+ byte[] address;
}
Modified: gnunet-java/src/main/java/org/gnunet/transport/Transport.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/transport/Transport.java
2013-10-21 23:48:01 UTC (rev 30390)
+++ gnunet-java/src/main/java/org/gnunet/transport/Transport.java
2013-10-22 00:00:54 UTC (rev 30391)
@@ -4,11 +4,16 @@
import org.gnunet.mq.Envelope;
import org.gnunet.mq.NotifySentHandler;
import org.gnunet.transport.callbacks.HelloUpdateCallback;
+import org.gnunet.transport.callbacks.OfferHelloContinuation;
import org.gnunet.transport.callbacks.PeerIterateCallback;
import org.gnunet.transport.callbacks.TryConnectCallback;
import org.gnunet.transport.messages.RequestConnectMessage;
+import org.gnunet.transport.messages.StartMessage;
import org.gnunet.util.*;
+import java.util.LinkedList;
+import java.util.List;
+
/**
* ...
*
@@ -21,16 +26,48 @@
*/
private final Client client;
- boolean initRequested;
+ /**
+ * Hello of our peer. May be null if not received yet.
+ */
+ private HelloMessage myHello;
+ /**
+ * Callbacks waiting for a hello.
+ */
+ private List<GetHelloHolder> getHelloHolderList = new
LinkedList<GetHelloHolder>();
+
+ /**
+ * Wrapper to give each get hello request a unique identity.
+ */
+ private class GetHelloHolder {
+ HelloUpdateCallback cb;
+ }
+
private final class TransportReceiver extends RunaboutMessageReceiver {
+ public void visit(HelloMessage m) {
+ System.out.println("got hello");
+ myHello = m;
+ List<GetHelloHolder> list = getHelloHolderList;
+ getHelloHolderList = new LinkedList<GetHelloHolder>();
+ for (GetHelloHolder h : list) {
+ h.cb.onHello(m);
+ }
+ }
@Override
public void handleError() {
client.reconnect();
- // FIXME: complete
+ sendStart();
}
}
+ private void sendStart() {
+ org.gnunet.transport.messages.StartMessage m = new StartMessage();
+ // no self check or payload traffic for now
+ m.options = 0;
+ m.self = new PeerIdentity();
+ client.send(m);
+ }
+
/**
* Create a handle to the transport service.
*
@@ -39,6 +76,7 @@
public Transport(Configuration cfg) {
client = new Client("transport", cfg);
client.installReceiver(new TransportReceiver());
+ sendStart();
}
/**
@@ -71,14 +109,7 @@
};
}
- /**
- * ... (discuss first)
- */
- public void init(Object receiveCallback, Object notifyConnect, Object
notifyDisconnect) {
- }
-
-
/**
* Obtain the HELLO message for this peer.
*
@@ -88,8 +119,25 @@
* cost estimate will be 0.
* @return handle to cancel the operation
*/
- Cancelable getHello(HelloUpdateCallback rec) {
- throw new UnsupportedOperationException();
+ Cancelable getHello(final HelloUpdateCallback rec) {
+ if (myHello != null) {
+ return Scheduler.add(new Scheduler.Task() {
+ @Override
+ public void run(Scheduler.RunContext ctx) {
+ rec.onHello(myHello);
+ }
+ });
+ }
+ System.out.println("waiting for hello");
+ final GetHelloHolder holder = new GetHelloHolder();
+ holder.cb = rec;
+ getHelloHolderList.add(holder);
+ return new Cancelable() {
+ @Override
+ public void cancel() {
+ getHelloHolderList.remove(holder);
+ }
+ };
}
/**
@@ -98,36 +146,32 @@
* malformed or useless due to our local configuration.
*
* @param hello the hello message
- * @param cont continuation to call when HELLO has been sent,
- * tc reason GNUNET_SCHEDULER_REASON_TIMEOUT for fail
- * tc reasong GNUNET_SCHEDULER_REASON_READ_READY for success
+ * @param cont continuation to call when HELLO has been sent
* @return a GNUNET_TRANSPORT_OfferHelloHandle handle or NULL on failure,
* in case of failure cont will not be called
*/
Cancelable offerHello(HelloMessage hello,
- Scheduler.Task cont) {
- throw new UnsupportedOperationException();
+ final OfferHelloContinuation cont) {
+ final Envelope ev = new Envelope(hello);
+ ev.notifySent(new NotifySentHandler() {
+ @Override
+ public void onSent() {
+ cont.onDone();
+ }
+ });
+ client.send(ev);
+ return new Cancelable() {
+ @Override
+ public void cancel() {
+ ev.cancel();
+ }
+ };
}
- /**
- * Return all the known addresses for a specific peer or all peers.
- * Returns continuously all address if oneShot is set to false
- * <p/>
- * Returns the address(es) that we are currently using for this
- * peer. Upon completion, the 'AddressLookUpCallback' is called one more
- * time with 'NULL' for the address and the peer. After this, the
operation must no
- * longer be explicitly canceled.
- *
- * @param peer peer identity to look up the addresses
of, CHANGE: allow NULL for all (connected) peers
- * @param oneShot GNUNET_YES to return the current state
and then end (with NULL+NULL),
- * GNUNET_NO to monitor the set of
addresses used (continuously, must be explicitly canceled)
- * @param timeout how long is the lookup allowed to take
at most (irrelevant if oneShot is set to GNUNET_NO)
- * @param peerAddressCallback function to call with the results
- */
- Cancelable getActiveAddresses(PeerIdentity peer, int oneShot,
- RelativeTime timeout, PeerIterateCallback
peerAddressCallback) {
- throw new UnsupportedOperationException();
+ public void disconnect() {
+ client.disconnect();
}
+
}
Modified:
gnunet-java/src/main/java/org/gnunet/transport/callbacks/HelloUpdateCallback.java
===================================================================
---
gnunet-java/src/main/java/org/gnunet/transport/callbacks/HelloUpdateCallback.java
2013-10-21 23:48:01 UTC (rev 30390)
+++
gnunet-java/src/main/java/org/gnunet/transport/callbacks/HelloUpdateCallback.java
2013-10-22 00:00:54 UTC (rev 30391)
@@ -1,9 +1,12 @@
package org.gnunet.transport.callbacks;
+import org.gnunet.hello.HelloMessage;
+
/**
* ...
*
* @author Florian Dold
*/
public interface HelloUpdateCallback {
+ void onHello(HelloMessage helloMessage);
}
Added:
gnunet-java/src/main/java/org/gnunet/transport/callbacks/OfferHelloContinuation.java
===================================================================
---
gnunet-java/src/main/java/org/gnunet/transport/callbacks/OfferHelloContinuation.java
(rev 0)
+++
gnunet-java/src/main/java/org/gnunet/transport/callbacks/OfferHelloContinuation.java
2013-10-22 00:00:54 UTC (rev 30391)
@@ -0,0 +1,25 @@
+/*
+ This file is part of GNUnet.
+ (C) 2012, 2013 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.transport.callbacks;
+
+public interface OfferHelloContinuation {
+ void onDone();
+}
Modified:
gnunet-java/src/main/java/org/gnunet/transport/messages/AddressIterateResponseMessageContent.java
===================================================================
---
gnunet-java/src/main/java/org/gnunet/transport/messages/AddressIterateResponseMessageContent.java
2013-10-21 23:48:01 UTC (rev 30390)
+++
gnunet-java/src/main/java/org/gnunet/transport/messages/AddressIterateResponseMessageContent.java
2013-10-22 00:00:54 UTC (rev 30391)
@@ -49,9 +49,11 @@
@NestedMessage
public PeerIdentity peerIdentity;
@UInt32
- public int addrlen;
+ public int addrLen;
@UInt32
- public int pluginlen;
- @IntegerFill(bitSize = 8, signed = true)
- public byte[] rest;
+ public int pluginLen;
+ @VariableSizeIntegerArray(lengthField = "addrLen", bitSize = 8, signed =
true)
+ public byte[] address;
+ @VariableSizeString(lengthField = "pluginLen", terminationType =
StringTerminationType.NONE)
+ public String plugin;
}
Copied:
gnunet-java/src/main/java/org/gnunet/transport/messages/SetQuotaMessage.java
(from rev 30387,
gnunet-java/src/main/java/org/gnunet/transport/messages/BlacklistInitMessage.java)
===================================================================
---
gnunet-java/src/main/java/org/gnunet/transport/messages/SetQuotaMessage.java
(rev 0)
+++
gnunet-java/src/main/java/org/gnunet/transport/messages/SetQuotaMessage.java
2013-10-22 00:00:54 UTC (rev 30391)
@@ -0,0 +1,29 @@
+/*
+ This file is part of GNUnet.
+ (C) 2012, 2013 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.transport.messages;
+
+import org.gnunet.construct.UnionCase;
+import org.gnunet.util.GnunetMessage;
+
address@hidden(366)
+public class SetQuotaMessage implements GnunetMessage.Body {
+ // message body is empty
+}
Modified:
gnunet-java/src/main/java/org/gnunet/transport/messages/StartMessage.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/transport/messages/StartMessage.java
2013-10-21 23:48:01 UTC (rev 30390)
+++ gnunet-java/src/main/java/org/gnunet/transport/messages/StartMessage.java
2013-10-22 00:00:54 UTC (rev 30391)
@@ -7,8 +7,10 @@
import org.gnunet.util.PeerIdentity;
/**
- * ...
*
+ * Message from the transport service to the library
+ * asking to check if both processes agree about this
+ * peers identity.
* @author Florian Dold
*/
@UnionCase(360)
@@ -27,6 +29,4 @@
*/
@NestedMessage
public PeerIdentity self;
-
-
}
Modified: gnunet-java/src/main/java/org/gnunet/util/Client.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/util/Client.java 2013-10-21
23:48:01 UTC (rev 30390)
+++ gnunet-java/src/main/java/org/gnunet/util/Client.java 2013-10-22
00:00:54 UTC (rev 30391)
@@ -20,9 +20,9 @@
package org.gnunet.util;
import com.google.common.base.Optional;
+import com.google.common.base.Preconditions;
import org.gnunet.mq.Envelope;
import org.gnunet.mq.MessageQueue;
-import org.gnunet.statistics.Statistics;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -88,12 +88,13 @@
*/
private RunaboutMessageReceiver receiver;
- private boolean receiver_active;
+ private boolean receiverActive;
/**
* Handle to cancel the message currently submitted in the queue,
*/
private Cancelable currentSubmit;
+ private Scheduler.TaskIdentifier receiverLifenessTask;
/**
* Create a connection to a service.
@@ -277,6 +278,11 @@
}
connection.disconnect();
connection = null;
+ if (receiverLifenessTask != null) {
+ receiverLifenessTask.cancel();
+ receiverLifenessTask = null;
+ }
+ receiverActive = false;
}
public boolean isConnected() {
@@ -304,7 +310,7 @@
}
private void activateReceiver() {
- if (receiver_active || receiver == null)
+ if (receiverActive || receiver == null)
return;
final MessageReceiver proxyReceiver = new MessageReceiver() {
@Override
@@ -313,20 +319,27 @@
if (connection != null && connection.isConnected())
connection.receive(RelativeTime.FOREVER, this);
else
- receiver_active = false;
+ receiverActive = false;
}
@Override
public void handleError() {
Client.this.receiver.handleError();
- receiver_active = false;
+ receiverActive = false;
}
};
connection.receive(RelativeTime.FOREVER, proxyReceiver);
- receiver_active = true;
+ receiverActive = true;
}
public void installReceiver(RunaboutMessageReceiver receiver) {
+ Preconditions.checkState(this.receiver == null);
+ this.receiverLifenessTask = Scheduler.addDelayed(RelativeTime.FOREVER,
new Scheduler.Task() {
+ @Override
+ public void run(Scheduler.RunContext ctx) {
+ // nothing to be done
+ }
+ });
this.receiver = receiver;
if (connection != null && connection.isConnected())
activateReceiver();
Modified: gnunet-java/src/main/java/org/gnunet/util/crypto/EddsaPublicKey.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/util/crypto/EddsaPublicKey.java
2013-10-21 23:48:01 UTC (rev 30390)
+++ gnunet-java/src/main/java/org/gnunet/util/crypto/EddsaPublicKey.java
2013-10-22 00:00:54 UTC (rev 30391)
@@ -18,6 +18,10 @@
@FixedSizeIntegerArray(bitSize = 8, signed = false, length = 32)
public byte[] y;
+ public EddsaPublicKey() {
+ // default constructor for Construct
+ }
+
public EddsaPublicKey(Ed25519 a) {
x = Ed25519.encodeScalar(a.P0);
y = Ed25519.encodeScalar(a.P1);
Modified: gnunet-java/src/main/resources/org/gnunet/construct/MsgMap.txt
===================================================================
--- gnunet-java/src/main/resources/org/gnunet/construct/MsgMap.txt
2013-10-21 23:48:01 UTC (rev 30390)
+++ gnunet-java/src/main/resources/org/gnunet/construct/MsgMap.txt
2013-10-22 00:00:54 UTC (rev 30391)
@@ -13,6 +13,7 @@
org.gnunet.util.GnunetMessage$Body|286=org.gnunet.mesh.LocalAckMessage
org.gnunet.util.GnunetMessage$Body|13=org.gnunet.arm.messages.ListResultMessage
org.gnunet.util.GnunetMessage$Body|285=org.gnunet.mesh.DataMessage
+org.gnunet.util.GnunetMessage$Body|17=org.gnunet.hello.HelloMessage
org.gnunet.util.GnunetMessage$Body|153=org.gnunet.dht.MonitorStartStop
org.gnunet.util.GnunetMessage$Body|42002=org.gnunet.voting.messages.BallotRegisterFailureMessage
org.gnunet.util.GnunetMessage$Body|42001=org.gnunet.voting.messages.BallotRegisterRequestMessage
@@ -71,8 +72,8 @@
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|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.InfoMessage
org.gnunet.util.GnunetMessage$Body|333=org.gnunet.peerinfo.InfoEnd
org.gnunet.util.GnunetMessage$Body|331=org.gnunet.peerinfo.ListAllPeersMessage
@@ -84,6 +85,7 @@
org.gnunet.util.GnunetMessage$Body|383=org.gnunet.transport.messages.AddressIterateResponseMessage
org.gnunet.util.GnunetMessage$Body|496=org.gnunet.testbed.messages.HelperReplyMessage
org.gnunet.util.GnunetMessage$Body|495=org.gnunet.testbed.messages.HelperInitMessage
+org.gnunet.util.GnunetMessage$Body|366=org.gnunet.transport.messages.SetQuotaMessage
org.gnunet.util.GnunetMessage$Body|360=org.gnunet.transport.messages.StartMessage
org.gnunet.util.GnunetMessage$Body|483=org.gnunet.testbed.messages.ManagePeerServiceMessage
-# generated 2013/10/21 15:16:23
+# generated 2013/10/22 01:57:19
Added: gnunet-java/src/test/java/org/gnunet/transport/TransportTest.java
===================================================================
--- gnunet-java/src/test/java/org/gnunet/transport/TransportTest.java
(rev 0)
+++ gnunet-java/src/test/java/org/gnunet/transport/TransportTest.java
2013-10-22 00:00:54 UTC (rev 30391)
@@ -0,0 +1,51 @@
+/*
+ This file is part of GNUnet.
+ (C) 2012, 2013 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.transport;
+
+import org.gnunet.hello.HelloMessage;
+import org.gnunet.peerinfo.PeerInfo;
+import org.gnunet.peerinfo.PeerProcessor;
+import org.gnunet.testing.TestingSubsystem;
+import org.gnunet.transport.callbacks.HelloUpdateCallback;
+import org.gnunet.util.*;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+public class TransportTest {
+ @Test
+ public void test_transport_get_hello() {
+ Program.configureLogging("debug");
+ final Wrapper<Boolean> ended = new Wrapper<Boolean>(false);
+ TestingSubsystem ts = new TestingSubsystem("transport");
+ final Transport transport = new Transport(ts.getConfiguration());
+ transport.getHello(new HelloUpdateCallback() {
+ @Override
+ public void onHello(HelloMessage helloMessage) {
+ ended.set(true);
+ transport.disconnect();
+ }
+ });
+
+ Scheduler.run();
+ assertTrue(ended.get());
+ }
+}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r30391 - in gnunet-java: . src/main/java/org/gnunet/hello src/main/java/org/gnunet/peerinfo src/main/java/org/gnunet/transport src/main/java/org/gnunet/transport/callbacks src/main/java/org/gnunet/transport/messages src/main/java/org/gnunet/util src/main/java/org/gnunet/util/crypto src/main/resources/org/gnunet/construct src/test/java/org/gnunet src/test/java/org/gnunet/transport,
gnunet <=