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.types.MemberIdImpl;
27
28
29
30 /**
31 * The <code>PrepareAck</code> class represents a local message
32 * exchanged between members and the daemon; it is used by local
33 * members to notify the daemon that it has notified its membership
34 * listener(s) that a new view is to be installed.
35 *
36 * @author Alberto Montresor
37 * @author Hein Meling
38 * @since Jgroup 0.1
39 */
40 public final class PrepareAck
41 extends Event
42 {
43
44 ////////////////////////////////////////////////////////////////////////////////////////////
45 // Fields
46 ////////////////////////////////////////////////////////////////////////////////////////////
47
48 private static final long serialVersionUID = 6671374717319612210L;
49
50 /** Local member identifier */
51 private MemberId memberId;
52
53
54 ////////////////////////////////////////////////////////////////////////////////////////////
55 // Constructors
56 ////////////////////////////////////////////////////////////////////////////////////////////
57
58 /**
59 * Default constructor for externalization.
60 */
61 public PrepareAck() {}
62
63 /**
64 * Creates a <code>PrepareAck</code> object for the specified group
65 * identifier.
66 */
67 public PrepareAck(int gid, MemberId member)
68 {
69 super(PREPARE_ACK, gid);
70 this.memberId = member;
71 }
72
73
74 ////////////////////////////////////////////////////////////////////////////////////////////
75 // Methods
76 ////////////////////////////////////////////////////////////////////////////////////////////
77
78 /**
79 * Returns the member identifier for the member acknowledging
80 * the prepare event.
81 */
82 public MemberId getMemberId()
83 {
84 return memberId;
85 }
86
87
88 ////////////////////////////////////////////////////////////////////////////////////////////
89 // Methods from Externalizable
90 ////////////////////////////////////////////////////////////////////////////////////////////
91
92 /**
93 * Restores the content of this object from the marshalled data contained
94 * in the specified input stream.
95 *
96 * @param in the stream to be read
97 */
98 public void readExternal(ObjectInput in)
99 throws IOException, ClassNotFoundException
100 {
101 super.readExternal(in);
102 memberId = new MemberIdImpl();
103 memberId.readExternal(in);
104 }
105
106 /**
107 * Marshals the content of this object to the specified output stream.
108 *
109 * @param out the stream to be written
110 */
111 public void writeExternal(ObjectOutput out)
112 throws IOException
113 {
114 super.writeExternal(out);
115 memberId.writeExternal(out);
116 }
117
118
119 ////////////////////////////////////////////////////////////////////////////////////////////
120 // Methods from Object
121 ////////////////////////////////////////////////////////////////////////////////////////////
122
123 public String toString()
124 {
125 StringBuilder buf = new StringBuilder();
126 buf.append(super.toString());
127 buf.append("[PrepareAck: memberId=");
128 buf.append(memberId);
129 buf.append("]");
130 return buf.toString();
131 }
132
133 } // END PrepareAck