2018-12-16 17:27:44 +03:00
|
|
|
package InnaIrcBot;
|
|
|
|
|
2020-11-02 16:09:31 +03:00
|
|
|
import InnaIrcBot.linkstitles.LinksTitleManager;
|
|
|
|
|
2020-10-25 23:39:05 +03:00
|
|
|
import java.util.Collections;
|
2018-12-16 17:27:44 +03:00
|
|
|
import java.util.HashMap;
|
2020-10-25 23:39:05 +03:00
|
|
|
import java.util.Map;
|
2018-12-16 17:27:44 +03:00
|
|
|
|
|
|
|
public class ReconnectControl {
|
2020-10-25 23:39:05 +03:00
|
|
|
private static final Map<String, Boolean> serversList = Collections.synchronizedMap(new HashMap<>());
|
|
|
|
private static final Map<String, Integer> serversReconnects = Collections.synchronizedMap(new HashMap<>());
|
|
|
|
|
|
|
|
public static void register(String server){
|
|
|
|
serversList.putIfAbsent(server, true);
|
|
|
|
serversReconnects.putIfAbsent(server, 0);
|
2018-12-16 17:27:44 +03:00
|
|
|
}
|
2020-10-25 23:39:05 +03:00
|
|
|
public static void update(String server, boolean needReconnect){
|
|
|
|
serversList.replace(server, needReconnect);
|
2018-12-16 17:27:44 +03:00
|
|
|
}
|
|
|
|
|
2020-10-25 23:39:05 +03:00
|
|
|
public static synchronized void notify(String server){
|
2020-11-02 16:09:31 +03:00
|
|
|
if (! serversList.getOrDefault(server, false)) {
|
|
|
|
LinksTitleManager.interrupt();
|
2020-10-25 23:39:05 +03:00
|
|
|
return;
|
2020-11-02 16:09:31 +03:00
|
|
|
}
|
2020-10-25 23:39:05 +03:00
|
|
|
|
|
|
|
int count = serversReconnects.get(server);
|
|
|
|
|
|
|
|
if (count > 5) {
|
|
|
|
serversList.replace(server, false);
|
2020-11-02 16:09:31 +03:00
|
|
|
LinksTitleManager.interrupt();
|
2020-10-20 03:37:20 +03:00
|
|
|
return;
|
|
|
|
}
|
2020-10-25 23:39:05 +03:00
|
|
|
count++;
|
|
|
|
serversReconnects.put(server, count);
|
2020-10-20 03:37:20 +03:00
|
|
|
|
2020-11-02 16:09:31 +03:00
|
|
|
System.out.println("Main thread \"" + server + "\" removed from observable list after unexpected finish ("+count+").\n");
|
2020-10-25 23:39:05 +03:00
|
|
|
ConnectionsBuilder.getConnections().startNewConnection(server);
|
2020-10-20 03:37:20 +03:00
|
|
|
}
|
2018-12-16 17:27:44 +03:00
|
|
|
}
|