You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.9 KiB
71 lines
1.9 KiB
package network.MessageDecoders;
|
|
|
|
|
|
import network.Exceptions.InvalidMessageTypeException;
|
|
import network.Messages.Enums.MessageType;
|
|
|
|
/**
|
|
* Factory to create the appropriate decoder for a given message.
|
|
*/
|
|
public class DecoderFactory {
|
|
|
|
|
|
/**
|
|
* Private constructor. Currently doesn't need to be constructed.
|
|
*/
|
|
private DecoderFactory(){
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Creates the correct type of decoder for a given message type.
|
|
* @param type Type of message you want a decoder for.
|
|
* @return The decoder.
|
|
* @throws InvalidMessageTypeException If you pass in a {@link MessageType} that isn't recognised.
|
|
*/
|
|
public static MessageDecoder create(MessageType type) throws InvalidMessageTypeException {
|
|
|
|
|
|
switch (type) {
|
|
|
|
case HEARTBEAT: return new HeartBeatDecoder();
|
|
|
|
case RACESTATUS: return new RaceStatusDecoder();
|
|
|
|
//case DISPLAYTEXTMESSAGE: return new DisplayTextMessageDecoder();//TODO
|
|
|
|
case XMLMESSAGE: return new XMLMessageDecoder();
|
|
|
|
case RACESTARTSTATUS: return new RaceStartStatusDecoder();
|
|
|
|
//case YACHTEVENTCODE: return new YachtEventCodeDecoder();//TODO
|
|
|
|
//case YACHTACTIONCODE: return new YachtActionCodeDecoder();//TODO
|
|
|
|
//case CHATTERTEXT: return new ChatterTextDecoder();//TODO
|
|
|
|
case BOATLOCATION: return new BoatLocationDecoder();
|
|
|
|
case MARKROUNDING: return new MarkRoundingDecoder();
|
|
|
|
case COURSEWIND: return new CourseWindsDecoder();
|
|
|
|
case AVGWIND: return new AverageWindDecoder();
|
|
|
|
case REQUEST_TO_JOIN: return new RequestToJoinDecoder();
|
|
|
|
case JOIN_ACCEPTANCE: return new JoinAcceptanceDecoder();
|
|
|
|
case BOATACTION: return new BoatActionDecoder();
|
|
|
|
|
|
default: throw new InvalidMessageTypeException("Unrecognised message type: " + type);
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|