Update to latest TomP2P master

This commit is contained in:
Manfred Karrer 2014-11-09 13:48:24 +01:00
parent 4938f0ba4a
commit 5d5fd49a45
4 changed files with 85 additions and 9 deletions

View File

@ -32,7 +32,7 @@ repositories {
dependencies {
compile 'org.bitcoinj:bitcoinj-core:0.12'
compile 'net.tomp2p:tomp2p-all:5.0-Alpha.542a1a8-SNAPSHOT'
compile 'net.tomp2p:tomp2p-all:5.0-Alpha.32cd9f9-SNAPSHOT'
compile 'com.typesafe.akka:akka-actor_2.10:2.3.4'
compile 'org.slf4j:slf4j-api:1.7.7'
compile 'ch.qos.logback:logback-core:1.1.2'

View File

@ -21,14 +21,15 @@ import io.bitsquare.app.ArgumentParser;
import io.bitsquare.network.BootstrapNodes;
import io.bitsquare.network.Node;
import net.tomp2p.connection.Bindings;
import net.tomp2p.connection.StandardProtocolFamily;
import net.tomp2p.dht.PeerBuilderDHT;
import net.tomp2p.nat.PeerBuilderNAT;
import net.tomp2p.p2p.Peer;
import net.tomp2p.p2p.PeerBuilder;
import net.tomp2p.peers.Number160;
import net.tomp2p.peers.PeerAddress;
import net.tomp2p.peers.PeerMap;
import net.tomp2p.peers.PeerMapConfiguration;
import net.tomp2p.rpc.ObjectDataReply;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -38,6 +39,9 @@ import net.sourceforge.argparse4j.inf.Namespace;
public class SeedNode {
private static final Logger log = LoggerFactory.getLogger(SeedNode.class);
private static Peer peer = null;
private static boolean running = true;
public static void main(String[] args) throws Exception {
ArgumentParser parser = new ArgumentParser();
Namespace namespace = parser.parseArgs(args);
@ -46,6 +50,72 @@ public class SeedNode {
String id = defaultNode.getId();
int port = defaultNode.getPort();
// Passed program args will override the properties of the default bootstrapNode
// So you can use the same id but different ports (e.g. running several nodes on one server with
// different ports)
if (namespace.getString(ArgumentParser.SEED_ID_FLAG) != null)
id = namespace.getString(ArgumentParser.SEED_ID_FLAG);
if (namespace.getString(ArgumentParser.SEED_PORT_FLAG) != null)
port = Integer.valueOf(namespace.getString(ArgumentParser.SEED_PORT_FLAG));
try {
Number160 peerId = Number160.createHash(id);
PeerMapConfiguration pmc = new PeerMapConfiguration(peerId).peerNoVerification();
PeerMap pm = new PeerMap(pmc);
peer = new PeerBuilder(peerId).ports(port).peerMap(pm).start();
peer.objectDataReply(new ObjectDataReply() {
@Override
public Object reply(PeerAddress sender, Object request) throws Exception {
log.trace("received request: ", request.toString());
return "pong";
}
});
new PeerBuilderDHT(peer).start();
new PeerBuilderNAT(peer).start();
log.debug("SeedNode started.");
new Thread(new Runnable() {
@Override
public void run() {
while (running) {
for (PeerAddress pa : peer.peerBean().peerMap().all()) {
log.debug("peer online:" + pa);
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
} catch (Exception e) {
if (peer != null)
peer.shutdown().awaitUninterruptibly();
}
}
public static void stop() {
running = false;
if (peer != null) {
peer.shutdown().awaitUninterruptibly();
}
peer = null;
}
/*public static void main(String[] args) throws Exception {
ArgumentParser parser = new ArgumentParser();
Namespace namespace = parser.parseArgs(args);
Node defaultNode = BootstrapNodes.DIGITAL_OCEAN_1;
String id = defaultNode.getId();
int port = defaultNode.getPort();
// Passed program args will override the properties of the default bootstrapNode
// So you can use the same id but different ports (e.g. running several nodes on one server with
// different ports)
@ -60,18 +130,18 @@ public class SeedNode {
Peer peer = null;
try {
// Lets test with different settings
/* ChannelServerConfiguration csc = PeerBuilder.createDefaultChannelServerConfiguration();
ChannelServerConfiguration csc = PeerBuilder.createDefaultChannelServerConfiguration();
csc.ports(new Ports(Node.DEFAULT_PORT, Node.DEFAULT_PORT));
csc.portsForwarding(new Ports(Node.DEFAULT_PORT, Node.DEFAULT_PORT));
csc.connectionTimeoutTCPMillis(10 * 1000);
csc.idleTCPSeconds(10);
csc.idleUDPSeconds(10);*/
csc.idleUDPSeconds(10);
Bindings bindings = new Bindings();
bindings.addProtocol(StandardProtocolFamily.INET);
peer = new PeerBuilder(Number160.createHash(id)).bindings(bindings)
/*.channelServerConfiguration(csc)*/.ports(port).start();
.channelServerConfiguration(csc).ports(port).start();
peer.objectDataReply((sender, request) -> {
log.trace("received request: ", request.toString());
@ -94,5 +164,5 @@ public class SeedNode {
if (peer != null)
peer.shutdown().awaitUninterruptibly();
}
}
}*/
}

View File

@ -53,9 +53,12 @@ import net.tomp2p.p2p.Peer;
import net.tomp2p.p2p.PeerBuilder;
import net.tomp2p.peers.Number160;
import net.tomp2p.peers.PeerAddress;
import net.tomp2p.peers.PeerMap;
import net.tomp2p.peers.PeerMapChangeListener;
import net.tomp2p.peers.PeerMapConfiguration;
import net.tomp2p.peers.PeerStatistic;
import net.tomp2p.storage.Storage;
import net.tomp2p.utils.Utils;
import org.jetbrains.annotations.NotNull;
@ -110,7 +113,10 @@ class BootstrappedPeerFactory {
public ListenableFuture<PeerDHT> start(int port) {
try {
setState(BootstrapState.PEER_CREATION, "We create a P2P node.");
peer = new PeerBuilder(keyPair).ports(port).start();
PeerMapConfiguration pmc = new PeerMapConfiguration(Utils.makeSHAHash(keyPair.getPublic().getEncoded()));
PeerMap pm = new PeerMap(pmc);
peer = new PeerBuilder(keyPair).ports(port).peerMap(pm).start();
peerDHT = new PeerBuilderDHT(peer).storageLayer(new StorageLayer(storage)).start();
peer.peerBean().peerMap().addPeerMapChangeListener(new PeerMapChangeListener() {

View File

@ -26,7 +26,7 @@
<logger name="io.bitsquare" level="TRACE"/>
<logger name="org.bitcoinj" level="INFO"/>
<logger name="net.tomp2p" level="INFO"/>
<logger name="net.tomp2p" level="TRACE"/>
<logger name="net.tomp2p.message.Encoder" level="WARN"/>