Package org.jgroups

Class MergeView

  • All Implemented Interfaces:
    java.lang.Comparable<View>, java.lang.Iterable<Address>, Constructable<View>, SizeStreamable, Streamable

    public class MergeView
    extends View
    A view that is sent as a result of a cluster merge. Whenever a group splits into subgroups, e.g., due to a network partition, and later the subgroups merge back together, a MergeView instead of a View will be received by the application. The MergeView class is a subclass of View and contains as additional instance variable: the list of views that were merged. For example, if the group denoted by view V1:(p,q,r,s,t) splits into subgroups V2:(p,q,r) and V2:(s,t), the merged view might be V3:(p,q,r,s,t). In this case the MergeView would contain a list of 2 views: V2:(p,q,r) and V2:(s,t).
    Since:
    2.0
    Author:
    Bela Ban
    • Field Detail

      • subgroups

        protected View[] subgroups
    • Constructor Detail

      • MergeView

        public MergeView()
      • MergeView

        public MergeView​(ViewId view_id,
                         java.util.List<Address> members,
                         java.util.List<View> subgroups)
        Creates a new merge view
        Parameters:
        view_id - 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.
        subgroups - A list of Views representing the former subgroups
      • MergeView

        public MergeView​(ViewId view_id,
                         Address[] members,
                         java.util.List<View> subgroups)
      • MergeView

        public MergeView​(Address creator,
                         long id,
                         java.util.List<Address> members,
                         java.util.List<View> subgroups)
        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.
        subgroups - A list of Views representing the former subgroups
    • Method Detail

      • create

        public java.util.function.Supplier<? extends MergeView> create()
        Description copied from interface: Constructable
        Creates an instance of the class implementing this interface
        Specified by:
        create in interface Constructable<View>
        Overrides:
        create in class View
      • getSubgroups

        public java.util.List<View> getSubgroups()
      • deepEquals

        public boolean deepEquals​(View other)
        Overrides:
        deepEquals in class View
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class View
      • writeTo

        public void writeTo​(java.io.DataOutput 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
        Overrides:
        writeTo in class View
        Throws:
        java.io.IOException
      • readFrom

        public void readFrom​(java.io.DataInput in)
                      throws java.io.IOException,
                             java.lang.ClassNotFoundException
        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
        Overrides:
        readFrom in class View
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • listToArray

        protected static View[] listToArray​(java.util.List<View> list)
      • get

        protected int get​(Address member)
      • get

        protected Address get​(int index)