| /**************************************************************************** |
| * Copyright (c) 2004, 2009 Composent, Inc. 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: |
| * Composent, Inc. - initial API and implementation |
| *****************************************************************************/ |
| |
| package org.eclipse.ecf.remoteservice; |
| |
| import org.eclipse.ecf.remoteservice.events.IRemoteCallEvent; |
| |
| /** |
| * Listener for remote call events. The IRemoteService.callAsynch method |
| * supports the specification of a listener to receive and handle the results of |
| * a remote call asynchronously. When non-null instance of a class implementing |
| * this interface is provided to the IRemoteService.callAsynch method, it will |
| * subsequently have it's {@link #handleEvent(IRemoteCallEvent)} method called |
| * with<br> |
| * <ol> |
| * <li>An event that implements IRemoteCallStartEvent</li> |
| * <li>An event that implements IRemoteCallCompleteEvent</li> |
| * </ol> |
| * |
| * <p> |
| * Note these methods will be called asynchronously when notifications of remote |
| * changes are received by the provider implementation code. The provider is |
| * free to call the methods below with an arbitrary thread, so the |
| * implementation of these methods must be appropriately prepared. |
| * <p> |
| * For example, if the code implementing any of these methods must interact with |
| * user interface code, then it should use code such as the following to execute |
| * on the SWT UI thread: |
| * |
| * <pre> |
| * Display.getDefault().asyncExec(new Runnable() { |
| * public void run() { |
| * ... UI code here |
| * } |
| * }); |
| * </pre> |
| * |
| * Further, the code in the implementations of these methods should <b>not block</b> |
| * via I/O operations or blocking UI calls. |
| * |
| * @see IRemoteService |
| */ |
| public interface IRemoteCallListener { |
| |
| /** |
| * Handle remote call events. The two remote call events are |
| * IRemoteCallStartEvent, and IRemoteCallCompleteEvent |
| * |
| * @param event |
| * the event. Will not be <code>null</code>. |
| */ |
| public void handleEvent(IRemoteCallEvent event); |
| } |