22 package com.realtime.crossfire.jxclient.metaserver;
25 import java.util.ArrayList;
26 import java.util.Collection;
27 import java.util.Collections;
28 import java.util.HashMap;
29 import java.util.List;
31 import org.jetbrains.annotations.NotNull;
32 import org.jetbrains.annotations.Nullable;
45 private final List<MetaserverEntry>
metaList =
new ArrayList<>();
58 private final Object
sync =
new Object();
82 return metaList.get(index);
84 }
catch (
final IndexOutOfBoundsException ignored) {
98 if (metaserverEntry.getHostname().equals(serverName)) {
114 synchronized (
sync) {
115 return metaList.size();
124 synchronized (
sync) {
125 metaListPending.add(metaserverEntry);
133 metaListPending.clear();
140 final int oldMetaListSize;
141 final int newMetaListSize;
142 synchronized (
sync) {
143 oldMetaListSize = metaList.size();
145 metaList.addAll(metaListPending);
146 Collections.sort(metaList);
147 newMetaListSize = metaList.size();
149 metaListPending.clear();
152 metaserverListener.numberOfEntriesChanged();
155 for (
int i = 0, iMax = Math.max(oldMetaListSize, newMetaListSize); i < iMax; i++) {
157 metaserverEntryListener.entryChanged();
167 metaserverListeners.
add(listener);
175 metaserverListeners.
remove(listener);
205 if (existingListeners != null) {
206 return existingListeners;
210 metaserverEntryListeners.put(index, newListeners);
A list of event listeners.
Represents a response line from the metaserver.
void add(@NotNull final T listener)
Adds a listener.
Interface for listeners on metaserver entry related events.
void remove(@NotNull final T listener)
Removes a listener.