23 package com.realtime.crossfire.jxclient.metaserver;
28 import java.nio.file.Path;
29 import java.util.ArrayList;
30 import java.util.Collection;
32 import org.jetbrains.annotations.NotNull;
33 import org.jetbrains.annotations.Nullable;
63 private final Collection<Metaserver>
metaservers =
new ArrayList<>();
81 private final Object
sync =
new Object();
97 private long nextQuery = System.currentTimeMillis();
113 while (!Thread.currentThread().isInterrupted()) {
114 synchronized (
sync) {
116 final long now = System.currentTimeMillis();
133 }
catch (
final InterruptedException ignored) {
145 @SuppressWarnings(
"FieldCanBeLocal")
149 public void start() {
154 public void metaserver() {
159 public void preConnecting(@NotNull
final String serverInfo) {
164 public void connecting(@NotNull
final String serverInfo) {
169 public void connecting(@NotNull
final ClientSocketState clientSocketState, @NotNull
final String param) {
174 public void connected() {
179 public void connectFailed(@NotNull
final String reason) {
206 synchronized (
sync) {
215 synchronized (
sync) {
230 synchronized (
sync) {
237 }
catch (
final InterruptedException ex) {
239 System.err.println(
"Cannot stop metaserver thread: "+ex);
252 synchronized (
sync) {
262 synchronized (
sync) {
279 for (
final MetaserverEntry metaserverEntry : metaserver.queryMetaserver()) {
281 oldEntries.remove(metaserverEntry.getKey());
286 oldEntries.values().forEach(metaserverModel::addMetaserverEntry);