package NetworkAdapter.Implementation; import EnvironmentPluginAPI.CustomNetworkMessages.NetworkMessage; import NetworkAdapter.Interface.INetworkMessageReceivedEventHandler; import java.util.Iterator; import java.util.LinkedList; import java.util.List; /** * This class manages a list of listeners for the event, that a certain network message arrives.<br/> * It also informs all listeners comfortably about the event. */ class SubscriberCollection implements Iterable<INetworkMessageReceivedEventHandler>{ private List<INetworkMessageReceivedEventHandler> subscribers; //Initializes a new, empty collection of subscribers. public SubscriberCollection() { subscribers = new LinkedList<INetworkMessageReceivedEventHandler>(); } /** * adds an event listener to the collection of subscribers * * @param subscriber */ public void addSubscriber(INetworkMessageReceivedEventHandler subscriber) { subscribers.add(subscriber); } /** * Synchronously delivers the message to all subscribers. * Does nothing, if no listeners present. * * @param message */ public void deliverMessage(NetworkMessage message) { for (INetworkMessageReceivedEventHandler listener : subscribers) { listener.onMessageReceived(message); } } @Override public Iterator<INetworkMessageReceivedEventHandler> iterator() { return subscribers.iterator(); } }