innaircbot/src/main/java/InnaIrcBot/ReconnectControl.java

41 lines
1.3 KiB
Java
Raw Normal View History

2018-12-16 17:27:44 +03:00
package InnaIrcBot;
2020-11-02 16:09:31 +03:00
import InnaIrcBot.linkstitles.LinksTitleManager;
import java.util.Collections;
2018-12-16 17:27:44 +03:00
import java.util.HashMap;
import java.util.Map;
2018-12-16 17:27:44 +03:00
public class ReconnectControl {
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
}
public static void update(String server, boolean needReconnect){
serversList.replace(server, needReconnect);
2018-12-16 17:27:44 +03:00
}
public static synchronized void notify(String server){
2020-11-02 16:09:31 +03:00
if (! serversList.getOrDefault(server, false)) {
LinksTitleManager.interrupt();
return;
2020-11-02 16:09:31 +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;
}
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");
ConnectionsBuilder.getConnections().startNewConnection(server);
2020-10-20 03:37:20 +03:00
}
2018-12-16 17:27:44 +03:00
}