@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(); }
String from = message.getFromNode() != null ? String.valueOf(message.getFromNode().asUUID().getLeastSignificantBits()) : in ? "IN" : "OUT"; String to = message.getToNode() != null ? String.valueOf(message.getToNode().asUUID().getLeastSignificantBits()) : in ? "OUT" : "IN";
@Override public void onRead(HandlerContext ctx, final Object msg) { Pair<NodeAddress, byte[]> message = (Pair<NodeAddress, byte[]>) msg; Message msg1 = null; try { msg1 = messageSerializer.deserializeMessage(runtime, message.getRight()); if (msg1.getFromNode() == null) { msg1.setFromNode(message.getLeft()); } } catch (Throwable e) { logger.error("Error deserializing message", e); logger.error(InternalUtils.hexDump(32, message.getRight(), 0, message.getRight().length)); } if (msg1 != null) { ctx.fireRead(msg1); } }
final NodeAddress fromNode = message.getFromNode(); switch (messageType) methodId, (Object[]) message.getPayload(), null); invocation.setHeaders(message.getHeaders()); invocation.setFromNode(message.getFromNode()); invocation.setMessageId(messageId);
@Override public byte[] serializeMessage(BasicRuntime basicRuntime, Message message) throws Exception { return outputPool.run(out -> { return kryoPool.run(kryo -> { out.writeByte(message.getMessageType()); out.writeInt(message.getMessageId()); writeNodeAddress(out, message.getReferenceAddress()); out.writeInt(message.getInterfaceId()); out.writeInt(message.getMethodId()); writeObjectId(kryo, out, message); writeHeaders(kryo, out, message.getHeaders()); writeNodeAddress(out, message.getFromNode()); writePayload(kryo, out, message); out.flush(); return out.getByteArrayOutputStream().toByteArray(); }); }, DEFAULT_BUFFER_SIZE); }