CoherenceTM v3.4
Copyright© 2000-2008 by Oracle Corporation

com.tangosol.net.partition
Class PartitionSet

java.lang.Object
  extended by com.tangosol.util.Base
      extended by com.tangosol.util.BitHelper
          extended by com.tangosol.net.partition.PartitionSet
All Implemented Interfaces:
ExternalizableLite, java.io.Serializable

public class PartitionSet
extends BitHelper
implements ExternalizableLite

PartitionSet is a light-weight data structure that represents a set of partitions that are used in parallel processing. This set quite often accompanies a result of partial parallel execution and is used to determine whether or not the entire set of partitions was successfully processed.

This implementation is not thread-safe.

Since:
Coherence 3.1
Author:
gg 2005.12.20

Constructor Summary
PartitionSet()
          Default constructor (necessary for the ExternalizableLite interface).
PartitionSet(int cPartitions)
          Construct an empty partition set with a given count.
PartitionSet(PartitionSet partitions)
          Copy constructor: construct a new PartitionSet object equivalent to the specified one.
 
Method Summary
 boolean add(int nPartition)
          Add the specified partition to the set.
 boolean add(PartitionSet partitions)
          Add the specified PartitionSet to this set.
 int cardinality()
          Returns the number of marked partitions.
 void clear()
          Clear the set.
 boolean contains(int nPartition)
          Check whether or not the specified partition belongs to the set.
 boolean contains(PartitionSet partitions)
          Check whether or not the specified partition set belongs to this set.
 boolean equals(java.lang.Object o)
          Indicates whether some other object is "equal to" this one.
 void fill()
          Fill the set to contain all the partitions.
 int getPartitionCount()
          Return the number of partitions represented by this PartitionSet.
 boolean intersects(PartitionSet partitions)
          Check whether or not the specified partition set intersects with this set.
 void invert()
          Invert all the partitions.
 boolean isEmpty()
          Check whether or not the partition set is empty.
 boolean isFull()
          Check whether or not the partition set is full.
 int next(int nPartition)
          Return an index of the first marked partition that is more or equals to the specified partition.
 void readExternal(java.io.DataInput in)
          Restore the contents of this object by loading the object's state from the passed DataInput object.
 boolean remove(int nPartition)
          Remove the specified partition from the set.
 boolean remove(PartitionSet partitions)
          Remove the specified PartitionSet from this set.
 int removeNext(int nPartition)
          Remove the first marked partition starting at the specified partition.
 boolean retain(PartitionSet partitions)
          Retain only partitions in this set that are contained in the specified PartitionSet.
 java.lang.String toString()
          Returns a string representation of this PartitionSet.
 void writeExternal(java.io.DataOutput out)
          Save the contents of this object by storing the object's state into the passed DataOutput object.
 
Methods inherited from class com.tangosol.util.BitHelper
countBits, countBits, countBits, indexOfLSB, indexOfLSB, indexOfLSB, indexOfMSB, indexOfMSB, indexOfMSB, toBitString, toBitString, toBitString
 

Constructor Detail

PartitionSet

public PartitionSet()
Default constructor (necessary for the ExternalizableLite interface).


PartitionSet

public PartitionSet(int cPartitions)
Construct an empty partition set with a given count.

Parameters:
cPartitions - the partition count

PartitionSet

public PartitionSet(PartitionSet partitions)
Copy constructor: construct a new PartitionSet object equivalent to the specified one.

Parameters:
partitions - the partition set to copy
Method Detail

add

public boolean add(int nPartition)
Add the specified partition to the set.

Parameters:
nPartition - the partition to add
Returns:
true if the specified partition was actually added as a result of this call; false otherwise

add

public boolean add(PartitionSet partitions)
Add the specified PartitionSet to this set.

Parameters:
partitions - the PartitionSet to add
Returns:
true if all of the partitions were actually added as a result of this call; false otherwise

remove

public boolean remove(int nPartition)
Remove the specified partition from the set.

Parameters:
nPartition - the partition to remove
Returns:
true if the specified partition was actually removed as a result of this call; false otherwise

removeNext

public int removeNext(int nPartition)
Remove the first marked partition starting at the specified partition. If there are no marked partitions greater or equal to the specified partition, the first marked partition greater or equal to 0 but less than the specified partition is removed. If this PartitionSet is empty, -1 is returned.

Parameters:
nPartition - the partition to start checking from (inclusive)
Returns:
the marked partition that was removed or -1 if this PartitionSet is empty
Throws:
java.lang.IndexOutOfBoundsException - if the specified partition is invalid

remove

public boolean remove(PartitionSet partitions)
Remove the specified PartitionSet from this set.

Parameters:
partitions - the PartitionSet to remove
Returns:
true if all of the specified partitions were actually removed; false otherwise

retain

public boolean retain(PartitionSet partitions)
Retain only partitions in this set that are contained in the specified PartitionSet.

Parameters:
partitions - the PartitionSet to retain
Returns:
true if this PartitionSet changes as a result of this call; false otherwise

contains

public boolean contains(int nPartition)
Check whether or not the specified partition belongs to the set.

Parameters:
nPartition - the partition to check
Returns:
true if the specified partition is in the set; false otherwise

contains

public boolean contains(PartitionSet partitions)
Check whether or not the specified partition set belongs to this set.

Parameters:
partitions - the partition set to check
Returns:
true if all the partitions from the specified set are in this set; false otherwise

intersects

public boolean intersects(PartitionSet partitions)
Check whether or not the specified partition set intersects with this set.

Parameters:
partitions - the partition set to check
Returns:
true if the specified set contains at least one partition that is also present in this partition set; false otherwise

isEmpty

public boolean isEmpty()
Check whether or not the partition set is empty.

Returns:
true if none of the partitions are marked; false otherwise

isFull

public boolean isFull()
Check whether or not the partition set is full.

Returns:
true if all the partitions are marked; false otherwise

clear

public void clear()
Clear the set.


fill

public void fill()
Fill the set to contain all the partitions.


invert

public void invert()
Invert all the partitions. As a result of this operation, all marked partitions will be cleared and all cleared partitions will become marked.


next

public int next(int nPartition)
Return an index of the first marked partition that is more or equals to the specified partition. If no such parition exists then -1 is returned.

This method could be used to iterate over all marked partitions:

 for (int i = ps.next(0); i >= 0; i = ps.next(i+1))
     {
     // process partition
     }
 

Parameters:
nPartition - the partition to start checking from (inclusive)
Returns:
the next marked partition
Throws:
java.lang.IndexOutOfBoundsException - if the specified partition is invalid

cardinality

public int cardinality()
Returns the number of marked partitions.

Returns:
the number of marked partitions

readExternal

public void readExternal(java.io.DataInput in)
                  throws java.io.IOException
Restore the contents of this object by loading the object's state from the passed DataInput object.

Specified by:
readExternal in interface ExternalizableLite
Parameters:
in - the DataInput stream to read data from in order to restore the state of this object
Throws:
java.io.IOException - if an I/O exception occurs
java.io.NotActiveException - if the object is not in its initial state, and therefore cannot be deserialized into

writeExternal

public void writeExternal(java.io.DataOutput out)
                   throws java.io.IOException
Save the contents of this object by storing the object's state into the passed DataOutput object.

Specified by:
writeExternal in interface ExternalizableLite
Parameters:
out - the DataOutput stream to write the state of this object to
Throws:
java.io.IOException - if an I/O exception occurs

equals

public boolean equals(java.lang.Object o)
Indicates whether some other object is "equal to" this one.

Parameters:
o - the object to test for equality
Returns:
true if this object is the same as the given one; false otherwise.

toString

public java.lang.String toString()
Returns a string representation of this PartitionSet.

Returns:
a string representation of this PartitionSet

getPartitionCount

public int getPartitionCount()
Return the number of partitions represented by this PartitionSet.

Returns:
the total partition count

CoherenceTM v3.4
Copyright© 2000-2008 by Oracle Corporation