diff --git a/src/main/java/io/bitsquare/BitSquare.java b/src/main/java/io/bitsquare/BitSquare.java index ab2ece124f..6dd920c83f 100644 --- a/src/main/java/io/bitsquare/BitSquare.java +++ b/src/main/java/io/bitsquare/BitSquare.java @@ -26,6 +26,7 @@ import java.util.concurrent.TimeoutException; import javafx.application.Application; +import net.tomp2p.connection.Ports; import net.tomp2p.peers.Number160; import org.slf4j.Logger; @@ -43,11 +44,16 @@ public class BitSquare { private static final Logger log = LoggerFactory.getLogger(BitSquare.class); private static String appName = "Bitsquare"; + private static int clientPort; public static String getAppName() { return appName; } + public static int getClientPort() { + return clientPort; + } + public static void main(String[] args) { BitsquareArgumentParser parser = new BitsquareArgumentParser(); @@ -64,11 +70,12 @@ public class BitSquare { appName = appName + "-" + namespace.getString(BitsquareArgumentParser.NAME_FLAG); } - Integer port = BitsquareArgumentParser.PORT_DEFAULT; - if (namespace.getString(BitsquareArgumentParser.PORT_FLAG) != null) { - port = Integer.valueOf(namespace.getString(BitsquareArgumentParser.PORT_FLAG)); - } if (namespace.getBoolean(BitsquareArgumentParser.SEED_FLAG) == true) { + Integer port = BitsquareArgumentParser.PORT_DEFAULT; + if (namespace.getString(BitsquareArgumentParser.PORT_FLAG) != null) { + port = Integer.valueOf(namespace.getString(BitsquareArgumentParser.PORT_FLAG)); + } + ActorSystem actorSystem = ActorSystem.create(getAppName()); ActorRef seedNode = actorSystem.actorOf(DHTManager.getProps(), DHTManager.SEED_NAME); @@ -104,6 +111,10 @@ public class BitSquare { seedNodeThread.start(); } else { + clientPort = new Ports().tcpPort(); // default we use a random port for the client + if (namespace.getString(BitsquareArgumentParser.PORT_FLAG) != null) + clientPort = Integer.valueOf(namespace.getString(BitsquareArgumentParser.PORT_FLAG)); + Application.launch(BitSquareUI.class, args); } } diff --git a/src/main/java/io/bitsquare/gui/main/MainModel.java b/src/main/java/io/bitsquare/gui/main/MainModel.java index 89a6ace254..5cd874cbfc 100644 --- a/src/main/java/io/bitsquare/gui/main/MainModel.java +++ b/src/main/java/io/bitsquare/gui/main/MainModel.java @@ -17,6 +17,7 @@ package io.bitsquare.gui.main; +import io.bitsquare.BitSquare; import io.bitsquare.bank.BankAccount; import io.bitsquare.btc.WalletFacade; import io.bitsquare.gui.UIModel; @@ -106,7 +107,7 @@ class MainModel extends UIModel { // For testing with the serverside seednode we need the BootstrappedPeerFactory which gets started form // messageFacade.init - messageFacade.init(new BootstrapListener() { + messageFacade.init(BitSquare.getClientPort(), new BootstrapListener() { @Override public void onCompleted() { messageFacadeInited = true; diff --git a/src/main/java/io/bitsquare/msg/BootstrappedPeerFactory.java b/src/main/java/io/bitsquare/msg/BootstrappedPeerFactory.java index ac397be903..1cebde392f 100644 --- a/src/main/java/io/bitsquare/msg/BootstrappedPeerFactory.java +++ b/src/main/java/io/bitsquare/msg/BootstrappedPeerFactory.java @@ -39,7 +39,6 @@ import javafx.application.Platform; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; -import net.tomp2p.connection.Ports; import net.tomp2p.dht.PeerBuilderDHT; import net.tomp2p.dht.PeerDHT; import net.tomp2p.dht.StorageLayer; @@ -112,15 +111,13 @@ public class BootstrappedPeerFactory { // Public methods /////////////////////////////////////////////////////////////////////////////////////////// - public ListenableFuture start() { + public ListenableFuture start(int port) { try { - int randomPort = new Ports().tcpPort(); - //randomPort = 6500; /* ChannelServerConficuration csc = PeerBuilder.createDefaultChannelServerConfiguration(); csc.idleTCPSeconds(20).idleUDPSeconds(20).connectionTimeoutTCPMillis(20000); - Peer peer = new PeerBuilder(keyPair).ports(randomPort).channelServerConfiguration(csc).start();*/ - Peer peer = new PeerBuilder(keyPair).ports(randomPort).start(); - /* Peer peer = new PeerBuilder(keyPair).ports(randomPort).portsExternal(randomPort) + Peer peer = new PeerBuilder(keyPair).ports(port).channelServerConfiguration(csc).start();*/ + Peer peer = new PeerBuilder(keyPair).ports(port).start(); + /* Peer peer = new PeerBuilder(keyPair).ports(port).portsExternal(port) .channelServerConfiguration(csc).start(); */ PeerDHT peerDHT = new PeerBuilderDHT(peer).storageLayer(new StorageLayer @@ -139,6 +136,7 @@ public class BootstrappedPeerFactory { @Override public void peerUpdated(PeerAddress peerAddress, PeerStatatistic peerStatistics) { + log.debug("Peer updated: peerAddress=" + peerAddress + ", peerStatistics=" + peerStatistics); } }); @@ -159,6 +157,9 @@ public class BootstrappedPeerFactory { if (lastSuccessfulBootstrap == null) lastSuccessfulBootstrap = "default"; + // TODO + //lastSuccessfulBootstrap = "default"; + log.debug("lastSuccessfulBootstrap = " + lastSuccessfulBootstrap); switch (lastSuccessfulBootstrap) { case "relay": @@ -333,7 +334,7 @@ public class BootstrappedPeerFactory { DistributedRelay distributedRelay = nodeBehindNat.startSetupRelay(futureRelay); distributedRelay.addRelayListener((distributedRelay1, peerConnection) -> { - log.error("startSetupRelay Failed"); + log.debug("startSetupRelay distributedRelay handler called " + distributedRelay1 + "/" + peerConnection); settableFuture.setException(new Exception("startSetupRelay Failed")); }); } diff --git a/src/main/java/io/bitsquare/msg/MessageFacade.java b/src/main/java/io/bitsquare/msg/MessageFacade.java index 4cfe1e06cf..a69330b90d 100644 --- a/src/main/java/io/bitsquare/msg/MessageFacade.java +++ b/src/main/java/io/bitsquare/msg/MessageFacade.java @@ -103,11 +103,11 @@ public class MessageFacade implements MessageBroker { // Public Methods /////////////////////////////////////////////////////////////////////////////////////////// - public void init(BootstrapListener bootstrapListener) { + public void init(int port, BootstrapListener bootstrapListener) { p2pNode.setMessageBroker(this); p2pNode.setKeyPair(user.getMessageKeyPair()); - p2pNode.start(new FutureCallback() { + p2pNode.start(port, new FutureCallback() { @Override public void onSuccess(@Nullable PeerDHT result) { log.debug("p2pNode.start success result = " + result); diff --git a/src/main/java/io/bitsquare/msg/P2PNode.java b/src/main/java/io/bitsquare/msg/P2PNode.java index dfbe7ebef4..c721755090 100644 --- a/src/main/java/io/bitsquare/msg/P2PNode.java +++ b/src/main/java/io/bitsquare/msg/P2PNode.java @@ -114,13 +114,13 @@ public class P2PNode { bootstrappedPeerFactory.setKeyPair(keyPair); } - public void start(FutureCallback callback) { + public void start(int port, FutureCallback callback) { useDiscStorage(useDiskStorage); bootstrappedPeerFactory.setStorage(storage); setupTimerForIPCheck(); - ListenableFuture bootstrapComplete = bootstrap(); + ListenableFuture bootstrapComplete = bootstrap(port); Futures.addCallback(bootstrapComplete, callback); } @@ -209,8 +209,8 @@ public class P2PNode { // Private /////////////////////////////////////////////////////////////////////////////////////////// - private ListenableFuture bootstrap() { - ListenableFuture bootstrapComplete = bootstrappedPeerFactory.start(); + private ListenableFuture bootstrap(int port) { + ListenableFuture bootstrapComplete = bootstrappedPeerFactory.start(port); Futures.addCallback(bootstrapComplete, new FutureCallback() { @Override public void onSuccess(@Nullable PeerDHT peerDHT) { diff --git a/src/test/java/io/bitsquare/msg/dhttest/DHTTestController.java b/src/test/java/io/bitsquare/msg/dhttest/DHTTestController.java index a367ec0008..ee7b753a11 100644 --- a/src/test/java/io/bitsquare/msg/dhttest/DHTTestController.java +++ b/src/test/java/io/bitsquare/msg/dhttest/DHTTestController.java @@ -17,6 +17,7 @@ package io.bitsquare.msg.dhttest; +import io.bitsquare.BitSquare; import io.bitsquare.bank.BankAccountType; import io.bitsquare.gui.main.trade.orderbook.OrderBookListItem; import io.bitsquare.locale.CountryUtil; @@ -76,7 +77,7 @@ public class DHTTestController implements Initializable { @Override public void initialize(URL url, ResourceBundle rb) { - messageFacade.init(new BootstrapListener() { + messageFacade.init(BitSquare.getClientPort(), new BootstrapListener() { @Override public void onCompleted() { onMessageFacadeInitialised();