package call;
import java.io.IOException;
import java.net.SocketException;
import java.net.UnknownHostException;
public class PingScanner implements Runnable {
private static final int MIN_WAITTIME = 3_000;
private static final int MAX_WAITTIME = 60_000;
private static int waittime;
private static boolean active;
@Override
public void run() {
waittime = MIN_WAITTIME;
active = true;
while (active) {
scan();
if (waittime < MAX_WAITTIME)
waittime += 10_000;
for (int i = 0; i < waittime; i += 1000) {
Util.sleep(1000);
}
}
}
public static void resetWaitTime() {
waittime = MIN_WAITTIME;
}
private static void scan() {
for (Contact contact : ContactList.getUnsortedContacts()) {
scan(contact);
}
}
private static void scan(Contact contact) {
if (contact.isReachable()) {
try {
PingClient client;
client = new PingClient(contact);
client.run();
ContactList.setOnline(contact, true);
} catch (UnknownHostException | SocketException e) {
ContactList.setOnline(contact, false);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void close() {
active = false;
}
}