public LocalObjectEntry findLocalActor(Actor actor) { if (actor instanceof AbstractActor) { return (LocalObjectEntry) ((AbstractActor) actor).activation; } return localObjects.get(RemoteReference.from(actor)); }
@SuppressWarnings("unchecked") public static <R> Class<R> getInterfaceClass(final AbstractActor reference) { return from(reference)._interfaceClass(); }
/** * Gets a the id of an actor reference or instance. * * @param actor the actor whose identity you wish to retrieve * @return the actor's identity */ static String getIdentity(Actor actor) { return String.valueOf(RemoteReference.getId(RemoteReference.from(actor))); }
public static Object getId(final AbstractActor actor) { return getId(from(actor)); }
@SuppressWarnings("unchecked") public static <T> T cast(Class<T> remoteInterface, Actor actor) { return (T) Proxy.newProxyInstance(DefaultDescriptorFactory.class.getClassLoader(), new Class[]{ remoteInterface }, (proxy, method, args) -> { // TODO: throw proper exceptions for the expected error scenarios (non task return), final int methodId = instance.dynamicReferenceFactory.getMethodId(method); return ActorRuntime.getRuntime() .invoke(RemoteReference.from(actor), method, method.isAnnotationPresent(OneWay.class), methodId, args); }); } }
@Override public void serialize(final Object value, final JsonGenerator jgen, final SerializerProvider provider) throws IOException { final RemoteReference<?> reference = (RemoteReference<?>) (value instanceof AbstractActor ? RemoteReference.from((AbstractActor) value) : value); final String text = String.valueOf(RemoteReference.getId(reference)); final Class<?> interfaceClass = RemoteReference.getInterfaceClass(reference); if (interfaceClass != null && (interfaceClass == rawClass)) { // escape starting '!' if (!text.startsWith("!!")) { jgen.writeString(text); } else { jgen.writeString("!" + text); } } else if (interfaceClass != null && rawClass == null) { throw new IOException("Illegal json serialization of actor reference " + interfaceClass + ":" + text + " won't be able to deserialize later"); } else { jgen.writeString("!!" + interfaceClass.getName() + " " + text); } }
String toString(Object obj) { if (obj instanceof String) { return (String) obj; } if (obj instanceof AbstractActor) { final RemoteReference ref = RemoteReference.from((AbstractActor) obj); return RemoteReference.getInterfaceClass(ref).getSimpleName() + ":" + RemoteReference.getId(ref); } if (obj instanceof RemoteReference) { return RemoteReference.getInterfaceClass((RemoteReference<?>) obj).getSimpleName() + ":" + RemoteReference.getId((RemoteReference<?>) obj); } return String.valueOf(obj); }
String toString(Object obj) { if (obj instanceof String) { return (String) obj; } if (obj instanceof AbstractActor) { final RemoteReference ref = RemoteReference.from((AbstractActor) obj); return RemoteReference.getInterfaceClass(ref).getSimpleName() + ":" + RemoteReference.getId(ref); } if (obj instanceof RemoteReference) { return RemoteReference.getInterfaceClass((RemoteReference<?>) obj).getSimpleName() + ":" + RemoteReference.getId((RemoteReference<?>) obj); } return String.valueOf(obj); }
String toString(Object obj) { if (obj instanceof String) { return (String) obj; } if (obj instanceof AbstractActor) { final RemoteReference ref = RemoteReference.from((AbstractActor) obj); return RemoteReference.getInterfaceClass(ref).getSimpleName() + ":" + RemoteReference.getId(ref); } if (obj instanceof RemoteReference) { return RemoteReference.getInterfaceClass((RemoteReference<?>) obj).getSimpleName() + ":" + RemoteReference.getId((RemoteReference<?>) obj); } return String.valueOf(obj); }
if (object instanceof Actor) final RemoteReference reference = RemoteReference.from((Actor) object); target = (RemoteReference.getInterfaceClass(reference).getSimpleName() + ":" + RemoteReference.getId(reference)).replaceAll("[\"\\t\\r\\n]", "");
@Override public Logger getLogger(final Object object) { if (object instanceof Actor) { return getLogger(RemoteReference.getInterfaceClass(RemoteReference.from((Actor) object)).getName()); } if (object instanceof Class) { return getLogger(((Class) object).getName()); } if (object instanceof String) { return getLogger((String) object); } if (object != null) { return getLogger(object.getClass()); } return getLogger((String) null); } }
? actor : RemoteReference.from(actor);
if (context1 != null && context1 == context2 && context1.getActor() != null) final RemoteReference reference = RemoteReference.from(context1.getActor()); key = reference._interfaceClass();
if (context != null && context.getActor() != null) final RemoteReference contextReference = RemoteReference.from(context.getActor()); from = RemoteReference.getInterfaceClass(contextReference).getSimpleName() + ":"
/** * Requests the deactivation of an actor * * @param actor the actor which you want to deactivate. * @return A task indicating the state of the request. Immediately resolved if actor is not activated. */ static Task deactivate(final Actor actor) { final NodeAddress address = await(ActorRuntime.getRuntime().locateActor(RemoteReference.from(actor), false)); if(address != null) { final RuntimeActions runtimeActions = DefaultDescriptorFactory.observerRef(address, RuntimeActions.class, ""); return runtimeActions.deactivateActor(actor); } return Task.done(); }
@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); }
/** * Gets a the id of an actor reference or instance. * * @param actor the actor whose identity you wish to retrieve * @return the actor's identity */ static String getIdentity(Actor actor) { return String.valueOf(RemoteReference.getId(RemoteReference.from(actor))); }
@SuppressWarnings("unchecked") public static <R> Class<R> getInterfaceClass(final AbstractActor reference) { return from(reference)._interfaceClass(); }
public static Object getId(final AbstractActor actor) { return getId(from(actor)); }
@SuppressWarnings("unchecked") public static <T> T cast(Class<T> remoteInterface, Actor actor) { return (T) Proxy.newProxyInstance(DefaultDescriptorFactory.class.getClassLoader(), new Class[]{ remoteInterface }, (proxy, method, args) -> { // TODO: throw proper exceptions for the expected error scenarios (non task return), final int methodId = instance.dynamicReferenceFactory.getMethodId(method); return ActorRuntime.getRuntime() .invoke(RemoteReference.from(actor), method, method.isAnnotationPresent(OneWay.class), methodId, args); }); } }