Added BoatActonEncoder.
Updated ControllerClient to use RaceVisionByteEncoder.encode(message). It also logs a warning if the encoding fails. Also removed pointless and out of place encode/decode of the action enum. Added a BoatActionDecoderTest which tests encoding/decoding a BoatAction Message. issue #35 #36 #story[1095]
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package network.MessageEncoders;
|
||||
|
||||
|
||||
import network.Messages.AC35Data;
|
||||
import network.Messages.BoatAction;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
import static network.Utils.ByteConverter.intToBytes;
|
||||
|
||||
/**
|
||||
* This encoder can encode a {@link BoatAction} message.
|
||||
*/
|
||||
public class BoatActionEncoder implements MessageEncoder {
|
||||
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
public BoatActionEncoder() {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public byte[] encode(AC35Data message) {
|
||||
|
||||
//Downcast.
|
||||
BoatAction boatAction = (BoatAction) message;
|
||||
|
||||
//Message is 1 byte.
|
||||
ByteBuffer boatActionMessage = ByteBuffer.allocate(1);
|
||||
|
||||
boatActionMessage.put(intToBytes(boatAction.getBoatAction(), 1));
|
||||
|
||||
byte [] result = boatActionMessage.array();
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -33,6 +33,8 @@ public class EncoderFactory {
|
||||
|
||||
case JOIN_ACCEPTANCE: return new JoinAcceptanceEncoder();
|
||||
|
||||
case BOATACTION: return new BoatActionEncoder();
|
||||
|
||||
|
||||
default: throw new InvalidMessageTypeException("Unrecognised message type: " + type);
|
||||
}
|
||||
|
||||
@@ -341,12 +341,6 @@ public class RaceVisionByteEncoder {
|
||||
return result.array();
|
||||
}
|
||||
|
||||
public static byte[] boatActionMessage(BoatAction boatAction){
|
||||
ByteBuffer boatActionMessage = ByteBuffer.allocate(1);
|
||||
boatActionMessage.put(intToBytes(boatAction.getBoatAction(), 1));
|
||||
byte [] result = boatActionMessage.array();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,6 +8,10 @@ import java.util.Map;
|
||||
*/
|
||||
public enum BoatActionEnum {
|
||||
NOT_A_STATUS(-1),
|
||||
|
||||
/**
|
||||
* Autopilot = auto VMG.
|
||||
*/
|
||||
AUTO_PILOT(1),
|
||||
SAILS_IN(2),
|
||||
SAILS_OUT(3),
|
||||
@@ -68,4 +72,4 @@ public enum BoatActionEnum {
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user