diff --git a/src/main/java/seng302/Networking/BinaryMesageEncoder.java b/src/main/java/seng302/Networking/BinaryMesageEncoder.java index 0774bec8..bed18590 100644 --- a/src/main/java/seng302/Networking/BinaryMesageEncoder.java +++ b/src/main/java/seng302/Networking/BinaryMesageEncoder.java @@ -20,9 +20,9 @@ public class BinaryMesageEncoder { private int headerSourceID; private short headerMessageLength; - public BinaryMesageEncoder(byte headerMessageType, long headerTimeStamp, int headerSourceID, short headerMessageLength, byte[] message){ + public BinaryMesageEncoder(MessageType headerMessageType, long headerTimeStamp, int headerSourceID, short headerMessageLength, byte[] message){ //set the header - this.headerMessageType = headerMessageType; + this.headerMessageType = headerMessageType.getValue(); this.headerTimeStamp = headerTimeStamp; this.headerSourceID = headerSourceID; this.headerMessageLength = headerMessageLength; @@ -32,7 +32,7 @@ public class BinaryMesageEncoder { tempHeaderByteBuffer.put(this.headerSync2); tempHeaderByteBuffer.put(this.headerMessageType); tempHeaderByteBuffer.put(longToSixBytes(this.headerTimeStamp)); - tempHeaderByteBuffer.put(intToBytes(this.headerSourceID)); + tempHeaderByteBuffer.putInt(this.headerSourceID); tempHeaderByteBuffer.put(shortToBytes(this.headerMessageLength)); @@ -53,15 +53,6 @@ public class BinaryMesageEncoder { } - private short bytesToShort(byte[] bytesShort){ - ByteBuffer byteBuffer = ByteBuffer.allocate(2); - byteBuffer.order(ByteOrder.BIG_ENDIAN); - byteBuffer.put(bytesShort[0]); - byteBuffer.put(bytesShort[1]); - short shortVal = byteBuffer.getShort(0); - return shortVal; - } - private byte[] longToSixBytes(long x) { ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); buffer.putLong(x); diff --git a/src/main/java/seng302/Networking/BinaryMessageDecoder.java b/src/main/java/seng302/Networking/BinaryMessageDecoder.java index 8d76d1ef..d99bf0b9 100644 --- a/src/main/java/seng302/Networking/BinaryMessageDecoder.java +++ b/src/main/java/seng302/Networking/BinaryMessageDecoder.java @@ -43,36 +43,30 @@ public class BinaryMessageDecoder { this.crc = Arrays.copyOfRange(this.fullMessage, this.fullMessage.length - 4, fullMessage.length); //run through the checks - if (this.message.length != bytesToInt(this.headerMessageLength)){ + if (this.message.length != bytesToShort(this.headerMessageLength)){ System.err.println("message length in header does not equal the message length"); System.err.println("message length in header: " + bytesToInt(this.headerMessageLength)); System.err.println("message length: " + this.message.length); }else if(this.headerSync1 != 0x47){ System.err.println("Sync byte 1 is wrong"); - }else if(this.headerSync2 != 0x83){ + }else if(this.headerSync2 !=(byte) 0x83){ System.err.println("Sync byte 2 is wrong"); }else if(false){ //todo check crc } } + private short bytesToShort(byte[] bytesShort){ - ByteBuffer byteBuffer = ByteBuffer.allocate(2); - byteBuffer.order(ByteOrder.BIG_ENDIAN); - byteBuffer.put(bytesShort[0]); - byteBuffer.put(bytesShort[1]); - short shortVal = byteBuffer.getShort(0); - return shortVal; + ByteBuffer wrapped = ByteBuffer.wrap(bytesShort); + short num = wrapped.getShort(); + return num; } private int bytesToInt(byte[] bytesInt){ - ByteBuffer byteBuffer = ByteBuffer.allocate(4); - byteBuffer.order(ByteOrder.BIG_ENDIAN); - for(int i= 0; i