@Override public byte[] serializeMessage(final BasicRuntime runtime, final Message message) throws Exception { ensureInit(runtime); if (message.getPayload() instanceof Throwable && message.getMessageType() == MessageDefinitions.RESPONSE_ERROR) { final StringWriter sw = new StringWriter(); try (PrintWriter pw = new PrintWriter(sw)) { ((Throwable) message.getPayload()).printStackTrace(pw); pw.flush(); } message.withPayload(sw.toString()); } if (message.getHeaders() != null && message.getHeaders().size() == 0) { message.setHeaders(null); } return mapper.writeValueAsBytes(message); }
@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); }
@Override public byte[] serializeMessage(final BasicRuntime runtime, final Message message) throws Exception { ensureInit(runtime); if (message.getPayload() instanceof Throwable && message.getMessageType() == MessageDefinitions.RESPONSE_ERROR) { final StringWriter sw = new StringWriter(); try (PrintWriter pw = new PrintWriter(sw)) { ((Throwable) message.getPayload()).printStackTrace(pw); pw.flush(); } message.withPayload(sw.toString()); } if (message.getHeaders() != null && message.getHeaders().size() == 0) { message.setHeaders(null); } return mapper.writeValueAsBytes(message); }