/******************************************************************************* * Copyright (c) 2001, 2005 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jem.internal.proxy.core; /* */ /** * This is the registry for handling callbacks. * It is used to register and deregister callbacks. * * Callbacks are split into two parts: * 1) CallbackProxy. This is any proxy that implements the * interface ICallback. (Or the * equivalent one if not standard remote vm). This is the * object which will actually submit the callback on the remote * vm. For example, any kind of listener. It would implement * both the ICallback and the appropriate listener interface. * Then when it gets called as a listener, it will redirect the * call to the remote vm callback handler to submit it to the * proxy side. * 2) Callback. This is on this side and is the object that will * be notified of the callback and will execute at that time. * */ public interface ICallbackRegistry { /** * Register this callback proxy and this callback. * * The process is to: * 1) Create the callbackProxy and the callback * 2) register these with registerCallback * 3) Now connect the callbackProxy so that it will start notifying. * For example, if it is a normal listener, at this time do the * addListener call to add the callbackProxy to the appropriate object. * You don't want it to start notifying before registering it. * (Though it won't hust it, it will just return null). */ public void registerCallback(IBeanProxy callbackProxy, ICallback cb); /** * Same as {@link ICallbackRegistry#registerCallback(IBeanProxy, ICallback) registerCallback} except that * it is deferred off into an expression. * * @param callbackProxy * @param cb * @param expression * * @since 1.1.0 */ public void registerCallback(IProxy callbackProxy, ICallback cb, IExpression expression); /** * Deregister the callback proxy. This will remove it from the * registry and release the callback. * * The process is to: * 1) Stop the proxy from listening so it no notifies. This is usually * removeListener on the remote vm. You don't want it notifying * after it deregister (though it won't hurt it, it will just return null). * 2) deregister it. */ public void deregisterCallback(IBeanProxy callbackProxy); }