package iamrescue.communication; import iamrescue.agent.ambulanceteam.ambulancetools.AllocationCodec; import iamrescue.communication.compression.NullCompressor; import iamrescue.communication.messages.AgentStuckMessage; import iamrescue.communication.messages.PingMessage; import iamrescue.communication.messages.codec.ExampleMessageCodec; import iamrescue.communication.messages.codec.IMessageCodec; import iamrescue.communication.messages.codec.updates.EntityDeletedCodec; import iamrescue.communication.messages.updates.AmbulanceTeamUpdatedMessage; import iamrescue.communication.messages.updates.BlockadeUpdatedMessage; import iamrescue.communication.messages.updates.BuildingUpdatedMessage; import iamrescue.communication.messages.updates.CivilianUpdatedMessage; import iamrescue.communication.messages.updates.FireBrigadeUpdatedMessage; import iamrescue.communication.messages.updates.PoliceForceUpdatedMessage; import iamrescue.communication.messages.updates.RoadUpdatedMessage; import java.util.ArrayList; import java.util.Collection; public class InterAgentMessageDecoderFactory { private static InterAgentMessageDecoderFactory instance; public static InterAgentMessageDecoderFactory getInstance() { if (instance == null) { instance = new InterAgentMessageDecoderFactory(); } return instance; } public InterAgentMessageDecoder create() { InterAgentMessageDecoder decoder = new InterAgentMessageDecoder(); decoder.setCompressor(new NullCompressor()); Collection<IMessageCodec<?>> standardCodecs = getStandardMessageCodecs(); for (IMessageCodec<?> iMessageCodec : standardCodecs) { decoder.registerCodec(iMessageCodec); } return decoder; } private Collection<IMessageCodec<?>> getStandardMessageCodecs() { Collection<IMessageCodec<?>> result = new ArrayList<IMessageCodec<?>>(); result.add(new ExampleMessageCodec()); result.add(new CivilianUpdatedMessage((short) 1).getCodec()); result.add(new FireBrigadeUpdatedMessage((short) 1).getCodec()); result.add(new PoliceForceUpdatedMessage((short) 1).getCodec()); result.add(new AmbulanceTeamUpdatedMessage((short) 1).getCodec()); result.add(new BuildingUpdatedMessage((short) 1).getCodec()); result.add(new RoadUpdatedMessage((short) 1).getCodec()); result.add(new BlockadeUpdatedMessage((short) 1).getCodec()); result.add(new AllocationCodec()); result.add(new EntityDeletedCodec()); result.add(new PingMessage().getCodec()); result.add(new AgentStuckMessage(null, null).getCodec()); return result; } }