package iamrescue.communication; import iamrescue.communication.messages.MessageChannel; import java.util.HashSet; import java.util.Set; import org.apache.commons.lang.Validate; public abstract class AIncomingMessageService implements IIncomingMessageService { private Set<MessageChannel> subscribedTo = new HashSet<MessageChannel>(); private int numberOfChannels; private ISimulationCommunicationConfiguration configuration; public AIncomingMessageService( ISimulationCommunicationConfiguration configuration) { Validate.notNull(configuration); this.numberOfChannels = configuration.getChannelCount(); this.configuration = configuration; } public void startListeningToChannel(MessageChannel channel) { subscribedTo.add(channel); } public void stopListeningToChannel(MessageChannel channel) { subscribedTo.remove(channel); } public int getNumberOfChannels() { return numberOfChannels; } public int[] getChannels() { int[] channels = new int[subscribedTo.size()]; int currentIndex = 0; for (MessageChannel channel : subscribedTo) { channels[currentIndex++] = channel.getChannelNumber(); } return channels; } @Override public Set<MessageChannel> getSubscribedChannels() { return subscribedTo; } @Override public int getMaximumNumberofSubscribedChannels() { return configuration.getMaxListenChannelCount(); } public int getNumberOfVoiceChannels() { return configuration.getVoiceChannels().size(); } }