default ObjectInvoker<?> getInvoker(Class clazz) { return DefaultDescriptorFactory.get().getInvoker(clazz); }
default <T> T getReference(NodeAddress nodeId, Class<T> iClass, Object id) { return getReference(null, nodeId, iClass, id); }
default <T> T getReference(Class<T> iClass, Object id) { return getReference(null, null, iClass, id); }
default ObjectInvoker<?> getInvoker(int classId) { return getInvoker(DefaultClassDictionary.get().getClassById(classId)); }
@Override public <T> T getReference(BasicRuntime runtime, NodeAddress address, Class<T> iClass, Object id) { return DefaultDescriptorFactory.get().getReference(this, address, iClass, id); }
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; }
@SuppressWarnings("unchecked") protected <T> RemoteReference<T> createReference(NodeAddress address, Class<T> iClass, String objectId) { final T reference = DefaultDescriptorFactory.get().getReference(iClass, objectId); if (address != null) { ((RemoteReference) reference).address = address; } return (RemoteReference<T>) reference; }
if (clazz != null) final Method method = DefaultDescriptorFactory.get().getInvoker(clazz).getMethod(message.getMethodId()); strTarget = clazz.getSimpleName() + ":" + message.getObjectId() + "." + method.getName();
@Override public <T> T getReference(final BasicRuntime runtime, final NodeAddress address, final Class<T> iClass, final Object id) { return DefaultDescriptorFactory.get().getReference(this, address, iClass, id); }
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; }
@SuppressWarnings({ "rawtypes", "unchecked" }) @Override public Object deserialize(final JsonParser jsonParser, final DeserializationContext ctxt) throws IOException { final String text = jsonParser.getText(); final int idx = text.indexOf('/'); if (idx != 0) { final UUID uuid = UUID.fromString(text.substring(0, idx)); return factory.getReference(new NodeAddressImpl(uuid), (Class) iClass, text.substring(idx + 1)); } else { return factory.getReference(null, (Class) iClass, text.substring(idx + 1)); } }
if (method == null) method = DefaultDescriptorFactory.get().getInvoker(RemoteReference.getInterfaceClass(toReference)).getMethod(invocation.getMethodId());
@SuppressWarnings({ "unchecked", "rawtypes" }) @Override public Object deserialize(final JsonParser jsonParser, final DeserializationContext ctxt) throws IOException { final String text = jsonParser.getText(); if (text != null && text.startsWith("!!")) { if (text.startsWith("!!!")) { // three "!!!" is the escape when the id starts with "!!" return factory.getReference(null, (Class) iClass, text.substring(1)); } int idx = text.indexOf(' '); String className = text.substring(2, idx); String key = text.substring(idx + 1); try { final Class aClass = Class.forName(className); return factory.getReference(null, aClass, key); } catch (ClassNotFoundException e) { throw new UncheckedException("Can't find class: " + e); } } return factory.getReference(null, (Class) iClass, text); }
final ObjectInvoker invoker = DefaultDescriptorFactory.get().getInvoker(target.getObject().getClass()); return invocationHandler.invoke(runtime, invocation, entry, target, invoker);
@Override public <T> T getReference(final BasicRuntime runtime, final NodeAddress address, final Class<T> iClass, final Object id) { if (address != null) { return stage.getReference(address, iClass, id); } else { return DefaultDescriptorFactory.get().getReference(this, address, iClass, id); } }
default ObjectInvoker<?> getInvoker(Class clazz) { return DefaultDescriptorFactory.get().getInvoker(clazz); }
@Override public Object copy(final Kryo kryo, final Object original) { if (original instanceof RemoteReference) { final RemoteReference<?> remoteReference = (RemoteReference<?>) original; if (RemoteReference.getRuntime(remoteReference) != null) { return DefaultDescriptorFactory.get().getReference(null, RemoteReference.getAddress(remoteReference), RemoteReference.getInterfaceClass(remoteReference), RemoteReference.getId(remoteReference)); } } return original; }
default ObjectInvoker<?> getInvoker(int classId) { return getInvoker(DefaultClassDictionary.get().getClassById(classId)); }
@Override public Object copy(final Kryo kryo, final Object original) { if (original instanceof AbstractActor) { return RemoteReference.from((AbstractActor) original); } if (original instanceof RemoteReference) { final RemoteReference<?> remoteReference = (RemoteReference<?>) original; if (RemoteReference.getRuntime(remoteReference) != null) { return DefaultDescriptorFactory.get().getReference(null, RemoteReference.getAddress(remoteReference), RemoteReference.getInterfaceClass(remoteReference), RemoteReference.getId(remoteReference)); } return original; } if (original == null) { return null; } throw new IllegalArgumentException("Invalid type for " + original); }
@Override public Object copy(Kryo kryo, Object original) { if (original instanceof RemoteReference) { final RemoteReference<?> remoteReference = (RemoteReference<?>) original; if (RemoteReference.getRuntime(remoteReference) != null) { return DefaultDescriptorFactory.get().getReference(null, RemoteReference.getAddress(remoteReference), RemoteReference.getInterfaceClass(remoteReference), RemoteReference.getId(remoteReference)); } return original; } return ActorRuntime.getRuntime().registerObserver(null, (ActorObserver) original); }