package org.limewire.lws.server; import java.util.List; import java.util.Vector; /** * This is what receives actual commands from an {@link LWSDispatcherSupport}. * This class abstract out the * {@link #addConnectionListener(ConnectionListener adding}, * {@link #removeConnectionListener(ConnectionListener removing}, and * {@link #setConnected(boolean notifying} of {@link LWSConnectionListener}s and * leaves subclasses responsible for implementing the * {@link ReceivesCommandsFromDispatcher#receiveCommand(String, java.util.Map command handling). */ public abstract class AbstractReceivesCommandsFromDispatcher implements LWSReceivesCommandsFromDispatcher { private final List<LWSConnectionListener> connectionListeners = new Vector<LWSConnectionListener>(); public final void setConnected(boolean isConnected) { if (!connectionListeners.isEmpty()) { synchronized (connectionListeners) { for (LWSConnectionListener lis : connectionListeners) { lis.connectionChanged(isConnected); } } } } public final boolean addConnectionListener(LWSConnectionListener lis) { synchronized (connectionListeners) { return connectionListeners.contains(lis) ? false : connectionListeners.add(lis); } } public final boolean removeConnectionListener(LWSConnectionListener lis) { return connectionListeners.remove(lis); } }