Class TXProcessImpl

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethodDescription
      voidaddAttribute​(java.lang.String name, java.lang.Object value)
      Adds a named attribute.
      voidassociate​(ITXPNode node)
      Associate an atomic unit of work (a node) with this process.
      voidcommit()
      Called by the process logic/application (not the nodes!)to request that the transactional process gets committed.
      java.lang.ObjectgetAttribute​(java.lang.String name)
      Gets a named attribute.
      ITXPPolicygetLocalPolicy()
      Return the process local policy
      ITXPidgetPid()
      Gets the pid of his process
      longgetRemainingTime()
      Gets the remaining time before timeout.
      ITXProcess.StategetState()
      Get the state of this process.
      longgetTimeout()
      Returns the nr of milliseconds this process waits for all nodes.
      protected ITXProcessLoggerlog() 
      voidonTimeout()
      Called when timeout is reached.
      voidready​(ITXPNode node, ITXPNode.State nodeState)
      A node will call this method to signal its state after attempting to do the work.
      java.lang.ObjectremoveAttribute​(java.lang.String name)
      Removes a named attribute.
      voidrollback()
      Called by the process logic/application (not the nodes) to request that the transactional process rolls back the work.
      voidsetStartTimeout​(long millisecs)
      Set the timeout time in milliseconds AND START THE TIMER!.
      voidtimeout​(ITXPNode node)
      Called by a node indicating it timed out waiting on the process.
      voiduseLocalPolicy​(ITXPPolicy policy)
      Have the coordinator use the specified local policy for this process.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • TXProcessImpl

        protected TXProcessImpl​(ITXPid pid,
                                TXPCoordinatorImpl coordinator)
        Constructs a process.
        Parameters:
        pid - the pid for this process
    • Method Detail

      • useLocalPolicy

        public void useLocalPolicy​(ITXPPolicy policy)
        Description copied from interface: ITXProcess
        Have the coordinator use the specified local policy for this process. To stop using a local policy specify null.
        Specified by:
        useLocalPolicy in interface ITXProcess
        Parameters:
        policy - the policy
      • getLocalPolicy

        public ITXPPolicy getLocalPolicy()
        Description copied from interface: ITXProcess
        Return the process local policy
        Specified by:
        getLocalPolicy in interface ITXProcess
        Returns:
        the process local policy or null if none is used
      • getPid

        public ITXPid getPid()
        Description copied from interface: ITXProcess
        Gets the pid of his process
        Specified by:
        getPid in interface ITXProcess
        Returns:
        the pid
      • getTimeout

        public long getTimeout()
        Description copied from interface: ITXProcess
        Returns the nr of milliseconds this process waits for all nodes. The timeout is applied when setStartTimeout() is called on the process. It is up to the coordinator (and maybe policy) to decide how to deal with a timeout but the nodes needs to be signalled that the process timed out and the defined behaviour for the node is to stop the work and wait for rollback unless the coordinator decides to CONTINUE or IGNORE the timeout.
        Specified by:
        getTimeout in interface ITXProcess
        Returns:
        the timeout time in milliseconds
      • associate

        public void associate​(ITXPNode node)
        Description copied from interface: ITXProcess
        Associate an atomic unit of work (a node) with this process. This will cause a begin() call in the node.
        Specified by:
        associate in interface ITXProcess
        Parameters:
        node - the node
      • ready

        public void ready​(ITXPNode node,
                          ITXPNode.State nodeState)
        Description copied from interface: ITXProcess
        A node will call this method to signal its state after attempting to do the work.
        Specified by:
        ready in interface ITXProcess
        Parameters:
        node - the node
        nodeState - the current state of the node
      • timeout

        public void timeout​(ITXPNode node)
        Description copied from interface: ITXProcess
        Called by a node indicating it timed out waiting on the process. The process (and coordinator) must assume that the node abandoned the process and rolled back any change they made on behalf of it.
        Specified by:
        timeout in interface ITXProcess
        Parameters:
        node - the node
      • commit

        public void commit()
                    throws TXPException
        Description copied from interface: ITXProcess
        Called by the process logic/application (not the nodes!)to request that the transactional process gets committed.
        Specified by:
        commit in interface ITXProcess
        Throws:
        TXPException - a coordinator and policy dependent exception (today 1 of 3, more details later)
      • rollback

        public void rollback()
                      throws TXPException
        Description copied from interface: ITXProcess
        Called by the process logic/application (not the nodes) to request that the transactional process rolls back the work.
        Specified by:
        rollback in interface ITXProcess
        Throws:
        TXPException - a coordinator and policy dependent exception (today 1 of 3, more details later)
      • addAttribute

        public void addAttribute​(java.lang.String name,
                                 java.lang.Object value)
        Description copied from interface: ITXProcess
        Adds a named attribute.
        Specified by:
        addAttribute in interface ITXProcess
        Parameters:
        name - the attribute name
        value - the attribute value
      • getAttribute

        public java.lang.Object getAttribute​(java.lang.String name)
        Description copied from interface: ITXProcess
        Gets a named attribute.
        Specified by:
        getAttribute in interface ITXProcess
        Parameters:
        name - the attribute name
        Returns:
        the attribute value
      • removeAttribute

        public java.lang.Object removeAttribute​(java.lang.String name)
        Description copied from interface: ITXProcess
        Removes a named attribute.
        Specified by:
        removeAttribute in interface ITXProcess
        Parameters:
        name - the attribute name
        Returns:
        the attribute value
      • setStartTimeout

        public void setStartTimeout​(long millisecs)
        Set the timeout time in milliseconds AND START THE TIMER!. -1L for indefinite (the default so you do not have to call it in that case) You should call this method after you associated all the nodes and all other initialization.
        Specified by:
        setStartTimeout in interface ITXProcess
        Parameters:
        millisecs - the timeout time in milliseconds
      • getRemainingTime

        public long getRemainingTime()
        Gets the remaining time before timeout. This value just keeps on counting, even when the timeout has occurred or the task is stopped.
        Specified by:
        getRemainingTime in interface ITXProcess
        Returns:
        A time in milliseconds >= zero indicating the remaining timeout time, or < zero if the task has timed out. The return value is Long.MAX_VALUE if the timeout is indefinite or never set.