Package org.jgroups

Class View

java.lang.Object
org.jgroups.View
All Implemented Interfaces:
Externalizable, Serializable, Cloneable, Streamable
Direct Known Subclasses:
MergeView

public class View extends Object implements Externalizable, Cloneable, Streamable
A view is a local representation of the current membership of a group. Only one view is installed in a channel at a time. Views contain the address of its creator, an ID and a list of member addresses. These adresses are ordered, and the first address is always the coordinator of the view. This way, each member of the group knows who the new coordinator will be if the current one crashes or leaves the group. The views are sent between members using the VIEW_CHANGE event
Version:
$Id: View.java,v 1.18 2007/10/01 07:24:41 belaban Exp $
Author:
Bela Ban
See Also:
  • Field Details

    • vid

      protected ViewId vid
    • members

      protected Vector<Address> members
      A list containing all the members of the view This list is always ordered, with the coordinator being the first member. the second member will be the new coordinator if the current one disappears or leaves the group.
    • payload

      protected Map<String,Object> payload
  • Constructor Details

    • View

      public View()
      creates an empty view, should not be used
    • View

      public View(ViewId vid, Vector<Address> members)
      Creates a new view
      Parameters:
      vid - The view id of this view (can not be null)
      members - Contains a list of all the members in the view, can be empty but not null.
    • View

      public View(Address creator, long id, Vector<Address> members)
      Creates a new view
      Parameters:
      creator - The creator of this view (can not be null)
      id - The lamport timestamp of this view
      members - Contains a list of all the members in the view, can be empty but not null.
  • Method Details

    • getVid

      public ViewId getVid()
      returns the view ID of this view if this view was created with the empty constructur, null will be returned
      Returns:
      the view ID of this view
    • getCreator

      public Address getCreator()
      returns the creator of this view if this view was created with the empty constructur, null will be returned
      Returns:
      the creator of this view in form of an Address object
    • getMembers

      public Vector<Address> getMembers()
      Returns a reference to the List of members (ordered) Do NOT change this list, hence your will invalidate the view Make a copy if you have to modify it.
      Returns:
      a reference to the ordered list of members in this view
    • containsMember

      public boolean containsMember(Address mbr)
      returns true, if this view contains a certain member
      Parameters:
      mbr - - the address of the member,
      Returns:
      true if this view contains the member, false if it doesn't if the argument mbr is null, this operation returns false
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • size

      public int size()
      returns the number of members in this view
      Returns:
      the number of members in this view 0..n
    • clone

      public Object clone()
      creates a copy of this view
      Overrides:
      clone in class Object
      Returns:
      a copy of this view
    • printDetails

      public String printDetails()
      debug only
    • addPayload

      public void addPayload(String key, Object value)
      Adds a key and value to the view. Since the payloads will be shipped around *with* the view, so the keys and values need to be serializable. Note that the total serialized size of all keys and values cannot exceed 65000 bytes !
      Parameters:
      key -
      value -
    • getPayload

      public Object getPayload(String key)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • writeExternal

      public void writeExternal(ObjectOutput out) throws IOException
      Specified by:
      writeExternal in interface Externalizable
      Throws:
      IOException
    • readExternal

      public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
      Specified by:
      readExternal in interface Externalizable
      Throws:
      IOException
      ClassNotFoundException
    • writeTo

      public void writeTo(DataOutputStream out) throws IOException
      Description copied from interface: Streamable
      Write the entire state of the current object (including superclasses) to outstream. Note that the output stream must not be closed
      Specified by:
      writeTo in interface Streamable
      Throws:
      IOException
    • readFrom

      Description copied from interface: Streamable
      Read the state of the current object (including superclasses) from instream Note that the input stream must not be closed
      Specified by:
      readFrom in interface Streamable
      Throws:
      IOException
      IllegalAccessException
      InstantiationException
    • serializedSize

      public int serializedSize()