public void serialize(Header t, DataOutput dos) throws IOException { dos.writeUTF(t.getMessageId()); CompactEndPointSerializationHelper.serialize(t.getFrom(), dos); dos.writeUTF(t.getMessageType()); dos.writeUTF(t.getVerb()); /* Serialize the message header */ int size = t.details_.size(); dos.writeInt(size); Set<String> keys = t.details_.keySet(); for (String key : keys) { dos.writeUTF(key); byte[] value = t.details_.get(key); dos.writeInt(value.length); dos.write(value); } }
public Header deserialize(DataInputStream dis) throws IOException { String id = dis.readUTF(); EndPoint from = CompactEndPointSerializationHelper.deserialize(dis); String type = dis.readUTF(); String verb = dis.readUTF(); /* Deserializing the message header */ int size = dis.readInt(); Map<String, byte[]> details = new Hashtable<String, byte[]>(size); for (int i = 0; i < size; ++i) { String key = dis.readUTF(); int length = dis.readInt(); byte[] bytes = new byte[length]; dis.readFully(bytes); details.put(key, bytes); } return new Header(id, from, type, verb, details); }