/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.communication.rpc.api; import de.rcenvironment.core.communication.common.InstanceNodeSessionId; import de.rcenvironment.core.communication.spi.CallbackObject; /** * Service handling call backs from one platform to another. * * @author Doreen Seider */ public interface CallbackService extends RemotableCallbackService { /** * Adds an object so that call backs on this object can be invoked. * * @param callBackObject The object to invoke call backs on. * @param nodeId The {@link InstanceNodeSessionId} of the remote platform doing the call backs. * @return the object's identifier used for callback() and setTimeToLive(). */ String addCallbackObject(Object callBackObject, InstanceNodeSessionId nodeId); /** * Gets an already added callback object. * * @param objectIdentifier The identifier of the callback object. * @return the object or <code>null</code>, if there is none. */ Object getCallbackObject(String objectIdentifier); /** * Gets the identifier of this already added callback object. * * @param callbackObject The callback object to get the identifier for. * @return the object identifier or <code>null</code>, if the object is not present. */ String getCallbackObjectIdentifier(Object callbackObject); /** * Creates a proxy for an object, which needs to be called back. It delegates each method call to callBack() of the * {@link CallbackService}. * * @param callbackObject The object to create a callback proxy for. * @param objectIdentifier The object's identifier. * @param proxyHome The {@link InstanceNodeSessionId} of the remote platform where the proxy will be located then. * @return The created proxy object. */ Object createCallbackProxy(CallbackObject callbackObject, final String objectIdentifier, InstanceNodeSessionId proxyHome); }