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.arm; 20 21 import java.io.Externalizable; 22 23 24 /** 25 * Event types implementing the <code>ARMEvent</code> interface may be 26 * passed to the replication manager to notify it of certain events. 27 * The event itself must provide the <code>handle()</code> method, 28 * enabling the replication manager to invoke the event handler. That 29 * is, events provide self-handling. <p> 30 * 31 * Note that events must also implement the <code>Externalizable</code> 32 * interface. 33 * 34 * @see jgroup.arm.EDPresentEvent 35 * @see jgroup.arm.ViewChangeEvent 36 * @see jgroup.arm.ReplicaPingEvent 37 * @author Hein Meling 38 * @since Jgroup 1.2 39 */ 40 public interface ARMEvent 41 extends Externalizable 42 { 43 44 /** 45 * This method must implement the actual handling of the event, as 46 * recevied by the replication manager. 47 * 48 * @param distScheme 49 * access point to the replication manager for external events 50 * 51 */ 52 public void handle(DistributionScheme distScheme) 53 throws Exception; 54 55 /** 56 * Returns the groupd identifier associated with this event. 57 * If the event is not associated with any group, it should 58 * return -1. 59 */ 60 public int getGroupId(); 61 62 /** 63 * Retreive an object associated with this event. This method may 64 * return <code>null</code> if the event internals need not or should 65 * not be exposed externally. 66 */ 67 public Object getObject(); 68 69 } // END ARMEvent