package com.esotericsoftware.kryonet;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.atomic.AtomicInteger;
public class ReconnectTest extends KryoNetTestCase {
public void testReconnect () throws IOException {
final Timer timer = new Timer();
final Server server = new Server();
startEndPoint(server);
server.bind(tcpPort);
server.addListener(new Listener() {
public void connected (final Connection connection) {
timer.schedule(new TimerTask() {
public void run () {
System.out.println("Disconnecting after 2 seconds.");
connection.close();
}
}, 2000);
}
});
// ----
final AtomicInteger reconnetCount = new AtomicInteger();
final Client client = new Client();
startEndPoint(client);
client.addListener(new Listener() {
public void disconnected (Connection connection) {
if (reconnetCount.getAndIncrement() == 2) {
stopEndPoints();
return;
}
new Thread() {
public void run () {
try {
System.out.println("Reconnecting: " + reconnetCount.get());
client.reconnect();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}.start();
}
});
client.connect(5000, host, tcpPort);
waitForThreads(10000);
assertEquals(3, reconnetCount.getAndIncrement());
}
}