@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(); }
private String getInvokedClassAndMethodName(Message message) { if (message.getInterfaceId() != 0) { final Class clazz = DefaultClassDictionary.get().getClassById(message.getInterfaceId()); if (clazz != null) { final Method method = DefaultDescriptorFactory.get().getInvoker(clazz).getMethod(message.getMethodId()); return clazz.getSimpleName() + "." + method.getName(); } } return null; }
if (clazz != null) final Method method = DefaultDescriptorFactory.get().getInvoker(clazz).getMethod(message.getMethodId()); strTarget = clazz.getSimpleName() + ":" + message.getObjectId() + "." + method.getName();
private long getResponseTimeoutMillis(final Message message) { final Class<?> clazz = DefaultClassDictionary.get().getClassById(message.getInterfaceId()); if (clazz != null) { final Method method = DefaultDescriptorFactory.get().getInvoker(clazz).getMethod(message.getMethodId()); final Timeout timeout = timeoutAnnotationCache.getAnnotation(method); if (timeout != null) { return timeout.timeUnit().toMillis(timeout.value()); } } return responseTimeoutMillis; }
@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; } }
int methodId = message.getMethodId(); final Invocation invocation = new Invocation(reference, null, messageType == MessageDefinitions.ONE_WAY_MESSAGE,
@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); }
@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; } }