package rescuecore2.messages.control;
import java.io.InputStream;
import java.io.IOException;
import rescuecore2.messages.Message;
import rescuecore2.registry.AbstractMessageFactory;
import rescuecore2.log.Logger;
/**
A factory for control messages.
*/
public final class ControlMessageFactory extends AbstractMessageFactory<ControlMessageURN> {
/** Singleton instance. */
public static final ControlMessageFactory INSTANCE = new ControlMessageFactory();
private ControlMessageFactory() {
super(ControlMessageURN.class);
}
@Override
public Message makeMessage(ControlMessageURN urn, InputStream data) throws IOException {
switch (urn) {
case KG_CONNECT:
return new KGConnect(data);
case KG_ACKNOWLEDGE:
return new KGAcknowledge(data);
case GK_CONNECT_OK:
return new GKConnectOK(data);
case GK_CONNECT_ERROR:
return new GKConnectError(data);
case SK_CONNECT:
return new SKConnect(data);
case SK_ACKNOWLEDGE:
return new SKAcknowledge(data);
case SK_UPDATE:
return new SKUpdate(data);
case KS_CONNECT_OK:
return new KSConnectOK(data);
case KS_CONNECT_ERROR:
return new KSConnectError(data);
case KS_UPDATE:
return new KSUpdate(data);
case KS_COMMANDS:
return new KSCommands(data);
case VK_CONNECT:
return new VKConnect(data);
case VK_ACKNOWLEDGE:
return new VKAcknowledge(data);
case KV_CONNECT_OK:
return new KVConnectOK(data);
case KV_CONNECT_ERROR:
return new KVConnectError(data);
case KV_TIMESTEP:
return new KVTimestep(data);
case AK_CONNECT:
return new AKConnect(data);
case AK_ACKNOWLEDGE:
return new AKAcknowledge(data);
case KA_CONNECT_OK:
return new KAConnectOK(data);
case KA_CONNECT_ERROR:
return new KAConnectError(data);
case KA_SENSE:
return new KASense(data);
case SHUTDOWN:
return new Shutdown(data);
case ENTITY_ID_REQUEST:
return new EntityIDRequest(data);
case ENTITY_ID_RESPONSE:
return new EntityIDResponse(data);
default:
Logger.warn("Unrecognised message urn: " + urn);
return null;
}
}
}