View Javadoc

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