final IPAddress ipAddress = new IPAddress(packet
.getAddress());
// final Peer peer = new Peer(buddy.getAddress().toString(),
// buddy.getTCPPort(), PeerSource.KAD);
final Peer peer = PeerManagerSingleton.getInstance()
.newPeer(buddy.getAddress().toString(),
buddy.getTCPPort(), PeerSource.KAD);
Logger.getSingleton().logMessage(
"KAD callback request, Peer : " + peer);
JMRunnable task = new JMRunnable() {
public void JMRun() {
try {
_network_manager.addPeer(peer.getIP(), peer
.getPort());
} catch (NetworkManagerException e1) {
e1.printStackTrace();
}
long counter = 0;
while (!peer.isConnected()) {
counter++;
if (counter == 5) {
Logger
.getSingleton()
.logMessage(
"KAD callback request, Peer : failed to connect");
return;
}
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Logger.getSingleton().logMessage(
"KAD callback request, Peer : connected & send packet to : "
+ peer);
_network_manager.sendCallBackRequest(peer.getIP(),
peer.getPort(), clientID, fileHash,
ipAddress, port);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
Logger.getSingleton().logMessage(
"KAD callback request : Disconnecting from "
+ peer);
_network_manager.disconnectPeer(peer.getIP(), peer
.getPort());
}
};
new Thread(task).start();