Package org.jgroups

Class View

  • All Implemented Interfaces:
    java.io.Externalizable, java.io.Serializable, java.lang.Cloneable, Streamable
    Direct Known Subclasses:
    MergeView

    public class View
    extends java.lang.Object
    implements java.io.Externalizable, java.lang.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:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.util.Vector<Address> members
      A list containing all the members of the view This list is always ordered, with the coordinator being the first member.
      protected java.util.Map<java.lang.String,​java.lang.Object> payload  
      protected ViewId vid  
    • Constructor Summary

      Constructors 
      Constructor Description
      View()
      creates an empty view, should not be used
      View​(Address creator, long id, java.util.Vector<Address> members)
      Creates a new view
      View​(ViewId vid, java.util.Vector<Address> members)
      Creates a new view
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addPayload​(java.lang.String key, java.lang.Object value)
      Adds a key and value to the view.
      java.lang.Object clone()
      creates a copy of this view
      boolean containsMember​(Address mbr)
      returns true, if this view contains a certain member
      boolean equals​(java.lang.Object obj)  
      Address getCreator()
      returns the creator of this view if this view was created with the empty constructur, null will be returned
      java.util.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.
      java.lang.Object getPayload​(java.lang.String key)  
      ViewId getVid()
      returns the view ID of this view if this view was created with the empty constructur, null will be returned
      int hashCode()  
      java.lang.String printDetails()
      debug only
      void readExternal​(java.io.ObjectInput in)  
      void readFrom​(java.io.DataInputStream in)
      Read the state of the current object (including superclasses) from instream Note that the input stream must not be closed
      int serializedSize()  
      int size()
      returns the number of members in this view
      java.lang.String toString()  
      void writeExternal​(java.io.ObjectOutput out)  
      void writeTo​(java.io.DataOutputStream out)
      Write the entire state of the current object (including superclasses) to outstream.
      • Methods inherited from class java.lang.Object

        finalize, getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • members

        protected java.util.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 java.util.Map<java.lang.String,​java.lang.Object> payload
    • Constructor Detail

      • View

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

        public View​(ViewId vid,
                    java.util.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,
                    java.util.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 Detail

      • 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 java.util.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​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.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 java.lang.Object clone()
        creates a copy of this view
        Overrides:
        clone in class java.lang.Object
        Returns:
        a copy of this view
      • printDetails

        public java.lang.String printDetails()
        debug only
      • addPayload

        public void addPayload​(java.lang.String key,
                               java.lang.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 java.lang.Object getPayload​(java.lang.String key)
      • toString

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

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

        public void readExternal​(java.io.ObjectInput in)
                          throws java.io.IOException,
                                 java.lang.ClassNotFoundException
        Specified by:
        readExternal in interface java.io.Externalizable
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • writeTo

        public void writeTo​(java.io.DataOutputStream out)
                     throws java.io.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:
        java.io.IOException
      • readFrom

        public void readFrom​(java.io.DataInputStream in)
                      throws java.io.IOException,
                             java.lang.IllegalAccessException,
                             java.lang.InstantiationException
        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:
        java.io.IOException
        java.lang.IllegalAccessException
        java.lang.InstantiationException
      • serializedSize

        public int serializedSize()