/** * Returns an actor reference */ default <T> T getReference(final Class<T> iClass, final Object id) { return getReference(this, null, iClass, id); }
/** * Returns an observer reference to an observer in another node. * <p/> * Should only be used if the application knows for sure that an observer with the given id * indeed exists on that other node. * <p/> * This is a low level use of orbit-actors, recommended only for ActorExtensions. * * @param address the other node address. * @param iClass the IObserverClass * @param id the id, must not be null * @param <T> the ActorObserver sub interface * @return a remote reference to the observer */ default <T extends ActorObserver> T getRemoteObserverReference(NodeAddress address, final Class<T> iClass, final Object id) { return getReference(this, address, iClass, id); }
@Override public Object read(Kryo kryo, Input input, Class type) { ReferenceReplacement replacement = kryo.readObject(input, ReferenceReplacement.class); return BasicRuntime.getRuntime().getReference(replacement.interfaceClass, replacement.id); } }
@Override public RemoteReference read(Kryo kryo, Input input, Class type) { ReferenceReplacement replacement = kryo.readObject(input, ReferenceReplacement.class); return BasicRuntime.getRuntime().getReference((Class<RemoteReference>) replacement.interfaceClass, replacement.id); } }
@SuppressWarnings({ "unchecked", "rawtypes" }) @Override protected Object resolveObject(Object obj) throws IOException { if (obj instanceof ReferenceReplacement) { final ReferenceReplacement replacement = (ReferenceReplacement) obj; if (replacement.address != null) { return runtime.getRemoteObserverReference(replacement.address, (Class) replacement.interfaceClass, replacement.id); } return runtime.getReference((Class) replacement.interfaceClass, replacement.id); } return super.resolveObject(obj); } }
@Override public Object read(Kryo kryo, Input input, Class type) { ReferenceReplacement replacement = kryo.readObject(input, ReferenceReplacement.class); if (replacement.address != null) { return BasicRuntime.getRuntime().getRemoteObserverReference(replacement.address, (Class<ActorObserver>) replacement.interfaceClass, replacement.id); } return BasicRuntime.getRuntime().getReference(replacement.interfaceClass, replacement.id); } }
/** * Returns an actor reference */ default <T> T getReference(final Class<T> iClass, final Object id) { return getReference(this, null, iClass, id); }
/** * Returns an observer reference to an observer in another node. * <p/> * Should only be used if the application knows for sure that an observer with the given id * indeed exists on that other node. * <p/> * This is a low level use of orbit-actors, recommended only for ActorExtensions. * * @param address the other node address. * @param iClass the IObserverClass * @param id the id, must not be null * @param <T> the ActorObserver sub interface * @return a remote reference to the observer */ default <T extends ActorObserver> T getRemoteObserverReference(NodeAddress address, final Class<T> iClass, final Object id) { return getReference(this, address, iClass, id); }