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.relacs.events; 20 21 import java.io.IOException; 22 import java.io.ObjectInput; 23 import java.io.ObjectOutput; 24 25 import jgroup.core.MemberId; 26 import jgroup.relacs.gm.RemoteDispatcher; 27 import jgroup.relacs.types.MemberIdImpl; 28 29 /** 30 * The <code>JoinRequest</code> class represents a local message 31 * exchange between members and the daemon; it is used by the member to 32 * notify the daemon of a join request from the specified member. 33 * 34 * @author Alberto Montresor 35 * @since Jgroup 1.2 36 */ 37 public final class JoinRequest 38 extends Event 39 { 40 41 //////////////////////////////////////////////////////////////////////////////////////////// 42 // Fields 43 //////////////////////////////////////////////////////////////////////////////////////////// 44 45 private static final long serialVersionUID = -749635009327118327L; 46 47 /** Local member identifier */ 48 private MemberId memberId; 49 50 /** Reference to the member */ 51 private RemoteDispatcher dispatcher; 52 53 54 //////////////////////////////////////////////////////////////////////////////////////////// 55 // Constructors 56 //////////////////////////////////////////////////////////////////////////////////////////// 57 58 /** 59 * Default constructor for externalization. 60 */ 61 public JoinRequest() 62 { 63 } 64 65 /** 66 * Creates a new <code>JoinRequest</code> event for the specified 67 * <code>memberId</code> to join group <code>gid</code>. 68 */ 69 public JoinRequest(int gid, MemberId memberId, RemoteDispatcher dispatcher) 70 { 71 super(JOIN_REQUEST, gid); 72 this.memberId = memberId; 73 this.dispatcher = dispatcher; 74 } 75 76 //////////////////////////////////////////////////////////////////////////////////////////// 77 // Methods 78 //////////////////////////////////////////////////////////////////////////////////////////// 79 80 /** 81 * 82 */ 83 public MemberId getMemberId() 84 { 85 return memberId; 86 } 87 88 /** 89 * 90 */ 91 public RemoteDispatcher getDispatcher() 92 { 93 return dispatcher; 94 } 95 96 97 //////////////////////////////////////////////////////////////////////////////////////////// 98 // Methods from Externalizable 99 //////////////////////////////////////////////////////////////////////////////////////////// 100 101 /** 102 * Restores the content of this object from the marshalled data contained 103 * in the specified input stream. 104 * 105 * @param in the stream to be read 106 */ 107 public void readExternal(ObjectInput in) 108 throws IOException, ClassNotFoundException 109 { 110 super.readExternal(in); 111 memberId = new MemberIdImpl(); 112 memberId.readExternal(in); 113 dispatcher = (RemoteDispatcher) in.readObject(); 114 } 115 116 /** 117 * Marshals the content of this object to the specified output stream. 118 * 119 * @param out the stream to be written 120 */ 121 public void writeExternal(ObjectOutput out) 122 throws IOException 123 { 124 super.writeExternal(out); 125 memberId.writeExternal(out); 126 out.writeObject(dispatcher); 127 } 128 129 130 //////////////////////////////////////////////////////////////////////////////////////////// 131 // Methods from Object 132 //////////////////////////////////////////////////////////////////////////////////////////// 133 134 /** 135 * Returns a string representation of the object. 136 */ 137 public String toString() 138 { 139 StringBuilder buf = new StringBuilder(); 140 buf.append(super.toString()); 141 buf.append("[JoinRequest:"); 142 buf.append(" memberId="); 143 buf.append(memberId); 144 buf.append(" remoteDispatcher="); 145 buf.append(dispatcher); 146 buf.append("]"); 147 return buf.toString(); 148 } 149 150 } // END JoinRequest