package se.chalmers.gdcn.network;
import net.tomp2p.futures.BaseFutureAdapter;
import net.tomp2p.futures.FutureDiscover;
import net.tomp2p.p2p.Peer;
import net.tomp2p.p2p.PeerMaker;
import net.tomp2p.p2p.builder.DiscoverBuilder;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
/**
* Created by HalfLeif on 2014-04-09.
*/
public class DeceitfulNetworkUtils {
public static Peer createPeer(int port){
KeyPairGenerator generator = null;
try {
generator = KeyPairGenerator.getInstance("RSA");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
assert generator != null;
KeyPair keyPair = generator.generateKeyPair();
try {
return new PeerMaker(keyPair).setPorts(port).makeAndListen();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static void bootstrap(final Peer peer, String address, final int port, final OnReplyCommand finished){
try {
final InetAddress inetAddress = InetAddress.getByName(address);
DiscoverBuilder discoverBuilder = peer.discover().setInetAddress(inetAddress).setPorts(port);
discoverBuilder.start().addListener(new BaseFutureAdapter<FutureDiscover>() {
@Override
public void operationComplete(FutureDiscover future) throws Exception {
if (!future.isSuccess()) {
System.out.println("Bootstrap insuccessful");
finished.execute(null);
return;
}
finished.execute(future.getReporter());
}
});
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}