diff --git a/src/main/java/seng302/Networking/BinaryMesageEncoder.java b/src/main/java/seng302/Networking/BinaryMesageEncoder.java index bed18590..ce688279 100644 --- a/src/main/java/seng302/Networking/BinaryMesageEncoder.java +++ b/src/main/java/seng302/Networking/BinaryMesageEncoder.java @@ -1,8 +1,10 @@ package seng302.Networking; + import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.Arrays; +import java.util.zip.CRC32; /** * Created by hba56 on 21/04/17. @@ -11,7 +13,7 @@ public class BinaryMesageEncoder { private byte[] fullMessage; private byte[] header; private byte[] message; - private byte[] crc; + //private byte[] crc; private byte headerSync1 = (byte)0x47; private byte headerSync2 = (byte)0x83; @@ -46,8 +48,15 @@ public class BinaryMesageEncoder { tempMessageByteBuffer.put(this.header); tempMessageByteBuffer.put(this.message); - //todo fix crc, currently just some int - tempMessageByteBuffer.put(intToBytes(1)); + CRC32 crc = new CRC32(); + crc.reset(); + byte[] messageAndHeader = new byte[this.header.length + this.message.length]; + System.arraycopy(this.header, 0, messageAndHeader, 0, this.header.length); + System.arraycopy(this.message, 0, messageAndHeader, this.header.length, this.message.length); + crc.update(messageAndHeader); + //System.out.println(Arrays.toString(messageAndHeader)); + + tempMessageByteBuffer.put(intToBytes((int) crc.getValue())); this.fullMessage = tempMessageByteBuffer.array();