[jboss-svn-commits] JBL Code SVN: r18717 - labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Mar 6 06:34:32 EST 2008


Author: mark.little at jboss.com
Date: 2008-03-06 06:34:32 -0500 (Thu, 06 Mar 2008)
New Revision: 18717

Modified:
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TransactionReaper.java
Log:
http://jira.jboss.com/jira/browse/JBTM-337

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TransactionReaper.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TransactionReaper.java	2008-03-06 11:34:00 UTC (rev 18716)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TransactionReaper.java	2008-03-06 11:34:32 UTC (rev 18717)
@@ -65,6 +65,9 @@
  * @message com.arjuna.ats.arjuna.coordinator.TransactionReaper_3
  *          [com.arjuna.ats.arjuna.coordinator.TransactionReaper_3] -
  *          TransactionReaper::getTimeout for {0} returning {1}
+ * @message com.arjuna.ats.arjuna.coordinator.TransactionReaper_17
+ *          [com.arjuna.ats.arjuna.coordinator.TransactionReaper_17] -
+ *          TransactionReaper::getRemainingTimeout for {0} returning {1}
  * @message com.arjuna.ats.arjuna.coordinator.TransactionReaper_4
  *          [com.arjuna.ats.arjuna.coordinator.TransactionReaper_4] -
  *          TransactionReaper::check interrupting cancel in progress for {0}
@@ -878,6 +881,62 @@
 	}
 
 	/**
+	 * Given the transaction instance, this will return the time left before the
+	 * transaction is automatically rolled back if it has not been terminated.
+	 * 
+	 * @param control
+	 * @return the remaining time in seconds.
+	 */
+	
+	public final int getRemainingTimeout (Object control)
+	{
+	    if ((_transactions.size() == 0) || (control == null))
+	    {
+		if (tsLogger.arjLogger.debugAllowed())
+		{
+		    tsLogger.arjLogger.debug(DebugLevel.FUNCTIONS,
+			    VisibilityLevel.VIS_PUBLIC,
+			    FacilityCode.FAC_ATOMIC_ACTION,
+			    "TransactionReaper::getRemainingTimeout for " + control
+			    + " returning 0");
+		}
+
+		return 0;
+	    }
+
+	    final ReaperElement reaperElement = (ReaperElement)_timeouts.get(control);
+	    final Integer timeout;
+	    
+	    if (reaperElement == null) 
+	    {
+		timeout = new Integer(0);
+	    } 
+	    else
+	    {
+		// units are in milliseconds at this stage.
+		
+		long remainingTime = reaperElement._absoluteTimeout - System.currentTimeMillis();
+		double timeInSeconds = Math.ceil(remainingTime/1000.0);  // round up.
+		
+		if (timeInSeconds <= 0)
+		    timeInSeconds = 1;
+		
+		timeout = new Integer((int) remainingTime/1000);  // convert back to seconds.
+	    }
+
+	    tsLogger.arjLoggerI18N
+	    .debug(
+		    DebugLevel.FUNCTIONS,
+		    VisibilityLevel.VIS_PUBLIC,
+		    FacilityCode.FAC_ATOMIC_ACTION,
+		    "com.arjuna.ats.arjuna.coordinator.TransactionReaper_17",
+		    new Object[]
+		               { control, timeout });
+
+	    return timeout.intValue();
+	}
+	
+	/**
 	 * Given a Control, return the associated timeout, or 0 if we do not know
 	 * about it.
 	 *




More information about the jboss-svn-commits mailing list