package mgr; import java.util.*; import java.io.*; class Header extends Object implements Codes { int dataSize; int msgCode; int time; int timeout; int headerFlags; int errCodes; byte [] senderContext; byte [] crc; public Header() { Date date = new Date(); time = (int) (date.getTime() /1000); //current time in secs senderContext = new byte [32]; crc = new byte [2]; }//Header() public Header(DataInputStream hdr) //reconstituting constructor { try { dataSize = hdr.readInt(); msgCode = hdr.readInt(); ...//you get the idea for (int i = 0; i< 32; i++) senderContext[i] = hdr.readByte(); crc = new byte [2]; crc[0] = (byte) hdr.readUnsignedByte(); crc[1] = (byte) hdr.readUnsignedByte(); }//try catch (IOException exception) //stream end {...} }// Header(DataInputStream hdr) void serialize(DataOutputStream out) { byte [] hdrBytes = toByteArray(); try { out.write(hdrBytes, 0, hdrBytes.length); //copy bytes to stream setCrc(); //copy crc bytes to stream overriding existing crc values hdrBytes[hdrBytes.length - 2] = crc[0]; hdrBytes[hdrBytes.length - 1] = crc[1]; }//try catch(IOException exception) {... }//catch }//serialize() //mutataors public void msgCode (int code) {msgCode = code;} public void timeout (int secs) { timeout = secs; } public int dataSize(int size) { dataSize = size; } ... //accessors public int msgCode () {return msgCode ;} public int timeout () { return timeout; } public int dataSize() { dataSize; } ... char computeCrc() //char is unsigned {...} byte [] toByteArray() //return binary representation of header { ByteArrayOutputStream outbuf = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(outbuf); try { out.writeInt(dataSize); out.writeInt(msgCode); ... for (int i = 0; i < 32; i++) out.writeByte(senderContext[i]); out.writeByte(crc[0]); //make buffer size the same as //sizeof(header),ie,backward compatible out.writeByte(crc[1]); }//try catch(IOException exception) { return null; //null buffer indicates failure }//catch return outbuf.toByteArray(); }//toByteArray() void setCrc() {...} }//Header //End of file