package net.jxta.endpoint;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class MessengerStateListenerSet {
/**
* List of all registered state change listeners.
*/
private final Set<MessengerStateListener> stateChangeListeners;
public MessengerStateListenerSet() {
stateChangeListeners = new HashSet<MessengerStateListener>();
}
public synchronized void notifyNewState(int newState) {
Iterator<MessengerStateListener> listenerIter = stateChangeListeners.iterator();
while(listenerIter.hasNext()) {
MessengerStateListener listener = listenerIter.next();
if(!listener.messengerStateChanged(newState)) {
listenerIter.remove();
}
}
}
public synchronized void addStateListener(MessengerStateListener listener) {
stateChangeListeners.add(listener);
}
public synchronized void removeStateListener(MessengerStateListener listener) {
stateChangeListeners.remove(listener);
}
}