Class ActionHierarchy

java.lang.Object
com.arjuna.ats.arjuna.coordinator.ActionHierarchy

public class ActionHierarchy extends Object
Class that represents the transaction hierarchy. This class can cope with transaction hierarchies of arbitrary depth.
Since:
1.0.
Version:
$Id: ActionHierarchy.java 2342 2006-03-30 13:06:17Z $
Author:
Mark Little (mark@arjuna.com)
  • Field Details

    • DEFAULT_HIERARCHY_DEPTH

      public static final int DEFAULT_HIERARCHY_DEPTH
      See Also:
  • Constructor Details

    • ActionHierarchy

      public ActionHierarchy(int depth)
      Create a new (blank) hierarchy with sufficient space for the specified number of transactions. Once this space is exhausted, additional space will be obtained dynamically.
    • ActionHierarchy

      public ActionHierarchy(ActionHierarchy theCopy)
      Create a new copy of the specified transaction hierarchy.
  • Method Details

    • print

      public void print(PrintWriter strm)
      Print out the transaction hierarchy.
    • copy

      public void copy(ActionHierarchy c)
      Create a copy of the specified transaction hierarchy. Any hierarchy currently maintained by this object will be lost in favour of the new hierarchy. We check for self-assignment.
    • equals

      public final boolean equals(ActionHierarchy other)
      Overloads Object.equals.
    • add

      public final boolean add(Uid actionId)
      Insert new entry growing table as needed. Transaction id will be added as a top-level transaction.
      Returns:
      true if successful, false otherwise.
    • add

      public final boolean add(Uid actionId, int at)
      Add the transaction id at the specified level.
      Returns:
      true if successful, false otherwise.
    • isAncestor

      public final boolean isAncestor(Uid target)
      Scan hierarchy looking for a particular Uid starting at deepest and going up. Do NOT go past any top level action.
      Returns:
      true if is ancestor, false otherwise.
    • pack

      public void pack(OutputBuffer state) throws IOException
      Pack the hierarchy into the buffer.
      Throws:
      IOException
    • unpack

      public void unpack(InputBuffer state) throws IOException
      CAREFULLY unpack the 'new' hierarchy. We unpack into a temporary to ensure that the current hierarchy is not corrupted.
      Throws:
      IOException
    • forgetDeepest

      public final void forgetDeepest()
      Remove the deepest nested transaction from the hierarchy.
    • findCommonPrefix

      public final int findCommonPrefix(ActionHierarchy oldHierarchy)
      Find common prefix in two hierarchies.
      Returns:
      the index of the first common ancestor.
    • depth

      public final int depth()
      Returns the current depth of the hierarchy.
      Returns:
      the hierarchy depth.
    • getDeepestActionUid

      public final Uid getDeepestActionUid()
      Returns the transaction id of the most deeply nested transaction.
      Returns:
      the Uid of the deepest transaction.
    • getActionUid

      public final Uid getActionUid(int typeIndex)
      Returns:
      the identity of the transaction at the specified level in the hierarchy.
    • getActionInfo

      public final com.arjuna.ats.arjuna.coordinator.ActionInfo getActionInfo(int typeIndex)
      Returns:
      the ActionInfo for the transaction at the specified level. ActionInfo is not a public class so this is of limited use outside of the transaction system.