1 /* 2 * Copyright (c) 1998-2002 The Jgroup Team. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License version 2 as 6 * published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU Lesser General Public License for more details. 12 * 13 * You should have received a copy of the GNU Lesser General Public License 14 * along with this program; if not, write to the Free Software 15 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 16 * 17 */ 18 19 package jgroup.core; 20 21 /** 22 * When performing an asynchronous internal group method invocation (IGMI), 23 * an invoker may specify a callback object. The task of this callback object 24 * is to collect regular values and exceptions returned by members executing 25 * the asynchronous IGMI. <p> 26 * 27 * For each of the members contained in the view in which the invocation is 28 * executed, methods <tt>result</tt> or <tt>exception</tt> are invoked on the 29 * callback object. If a member becomes unreachable before being able to return 30 * a value or an exception to the invoker, then the callback object is notified 31 * through the invocation of method <tt>exception</tt> with a 32 * <tt>RemoteException</tt> as argument. Otherwise, the regular value or the 33 * exception is communicated to the callback object through the invocation 34 * of methods <tt>result</tt> or <tt>exception</tt>. <p> 35 * 36 * In both these methods, the identifier of the member returning the value or 37 * the exception is provided. On the other hand, no invocation identifier is 38 * provided. If the invoker need to distinguish return values associated to 39 * distinct exceptions, distinct callback objects should be used. 40 * 41 * @author Alberto Montresor 42 * @since Jgroup 0.8 43 */ 44 public interface Callback 45 { 46 47 /** 48 * Invoked by internal GMI service to notify this callback object that 49 * the member identified by <tt>MemberId</tt> has returned <tt>result</tt>. 50 * 51 * @param id the member identifier 52 * @param result the regular value returned by the asynchronous invocation 53 */ 54 public void result(MemberId id, Object result); 55 56 57 /** 58 * Invoked by internal GMI service to notify this callback object that 59 * the member identified by <tt>MemberId</tt> has thrown <tt>e</tt>. 60 * 61 * @param id the member identifier 62 * @param e the exception thrown by the asynchronous invocation 63 */ 64 public void exception(MemberId id, Exception e); 65 66 67 } // END Callback