private static void writePayload(Kryo kryo, Output out, Message message) { if (message.getPayload() instanceof Object[]) { out.writeByte(PayloadType.OBJECT_ARRAY.id); kryo.writeObject(out, message.getPayload()); return; } if (message.getPayload() == null) { out.writeByte(PayloadType.NULL.id); return; } out.writeByte(PayloadType.UNKNOWN.id); kryo.writeClassAndObject(out, message.getPayload()); }
@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 byte[] serializeMessage(final BasicRuntime runtime, Message message) throws Exception { final ByteArrayOutputStream baos = new ByteArrayOutputStream(); final ObjectOutput out = createObjectOutput(runtime, baos); out.writeByte(message.getMessageType()); out.writeInt(message.getMessageId()); if (message.getReferenceAddress() != null) { final UUID uuid = message.getReferenceAddress().asUUID(); out.writeLong(uuid.getMostSignificantBits()); out.writeLong(uuid.getLeastSignificantBits()); } else { out.writeLong(0); out.writeLong(0); } out.writeInt(message.getInterfaceId()); out.writeInt(message.getMethodId()); out.writeObject(message.getObjectId()); out.writeObject(message.getHeaders()); out.writeObject(message.getFromNode()); out.writeObject(message.getPayload()); return baos.toByteArray(); }
@Override public Message deserializeMessage(final BasicRuntime runtime, final byte[] payload) throws Exception { ensureInit(runtime); try { final Message message = mapper.readValue(payload, Message.class); // decode payload parameters according to the interface/method if (message.getPayload() != null && (message.getMessageType() == MessageDefinitions.ONE_WAY_MESSAGE || message.getMessageType() == MessageDefinitions.REQUEST_MESSAGE)) { final ObjectInvoker invoker = runtime.getInvoker(message.getInterfaceId()); final Method method = invoker.getMethod(message.getMethodId()); final Object[] args = castArgs(method.getGenericParameterTypes(), message.getPayload()); message.setPayload(args); } return message; } catch (Exception ex) { throw ex; } }
final Object payload = message.getPayload(); if (payload == null)
final Object payload = message.getPayload(); if (payload instanceof Object[])
final Invocation invocation = new Invocation(reference, null, messageType == MessageDefinitions.ONE_WAY_MESSAGE, methodId, (Object[]) message.getPayload(), null); invocation.setHeaders(message.getHeaders()); invocation.setFromNode(message.getFromNode()); if (logger.isTraceEnabled()) logger.trace("response received: " + message.getMessageId() + " " + message.getPayload() + "\r\n" + pendingResponse); try res = message.getPayload(); ObjectOutput out = new ObjectOutputStream(bos)) out.writeObject(message.getPayload()); byte[] raw = bos.toByteArray(); logger.trace("Payload for message #" + messageId + InternalUtils.hexDump(32, raw, 0, raw.length));
final Object originalPayload = message.getPayload(); final Object clonedPayload; runtime.bind();
final Object payload = message.getPayload(); if (messageType == MessageDefinitions.RESPONSE_ERROR && payload instanceof Throwable)
@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 { ensureInit(runtime); try { final Message message = mapper.readValue(payload, Message.class); // decode payload parameters according to the interface/method if (message.getPayload() != null && (message.getMessageType() == MessageDefinitions.ONE_WAY_MESSAGE || message.getMessageType() == MessageDefinitions.REQUEST_MESSAGE)) { final ObjectInvoker invoker = runtime.getInvoker(message.getInterfaceId()); final Method method = invoker.getMethod(message.getMethodId()); final Object[] args = castArgs(method.getGenericParameterTypes(), message.getPayload()); message.setPayload(args); } return message; } catch (Exception ex) { throw ex; } }