@Override public Message deserializeMessage(final BasicRuntime runtime, final byte[] payload) throws Exception { final ObjectInput in = createObjectInput(runtime, new ByteArrayInputStream(payload)); final Message message = new Message(); message.setMessageType(in.readByte()); message.setMessageId(in.readInt()); long most = in.readLong(); long least = in.readLong(); message.setReferenceAddress(most != 0 && least != 0 ? new NodeAddressImpl(new UUID(most, least)) : null); message.setInterfaceId(in.readInt()); message.setMethodId(in.readInt()); message.setObjectId(in.readObject()); message.setHeaders((Map) in.readObject()); message.setFromNode((NodeAddress) in.readObject()); message.setPayload(in.readObject()); return message; }
@Override public Message deserializeMessage(BasicRuntime basicRuntime, final byte[] payload) throws Exception { return inputPool.run(in -> { in.setInputStream(new ByteArrayInputStream(payload)); return kryoPool.run(kryo -> { final Message message = new Message(); message.setMessageType(in.readByte()); message.setMessageId(in.readInt()); message.setReferenceAddress(readNodeAddress(in)); message.setInterfaceId(in.readInt()); message.setMethodId(in.readInt()); message.setObjectId(readObjectId(kryo, in)); message.setHeaders(readHeaders(kryo, in)); message.setFromNode(readNodeAddress(in)); message.setPayload(readPayload(kryo, in)); return message; }); }, DEFAULT_BUFFER_SIZE); }