certi-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[certi-cvs] certi/RTIA TimeManagement.cc


From: certi-cvs
Subject: [certi-cvs] certi/RTIA TimeManagement.cc
Date: Wed, 30 Apr 2008 17:01:09 +0000

CVSROOT:        /sources/certi
Module name:    certi
Changes by:     Eric NOULARD <erk>      08/04/30 17:01:09

Modified files:
        RTIA           : TimeManagement.cc 

Log message:
        Try to avoid round-off error using RTIfedTime._epsilon
        First try for "easy fix" of 
        bug #23090 : UpdateAttributeValues throws InvalidFederationTime

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/TimeManagement.cc?cvsroot=certi&r1=3.33&r2=3.34

Patches:
Index: TimeManagement.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/TimeManagement.cc,v
retrieving revision 3.33
retrieving revision 3.34
diff -u -b -r3.33 -r3.34
--- TimeManagement.cc   26 Apr 2008 14:59:41 -0000      3.33
+++ TimeManagement.cc   30 Apr 2008 17:01:09 -0000      3.34
@@ -18,7 +18,7 @@
 // along with this program ; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 //
-// $Id: TimeManagement.cc,v 3.33 2008/04/26 14:59:41 erk Exp $
+// $Id: TimeManagement.cc,v 3.34 2008/04/30 17:01:09 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -668,27 +668,30 @@
 bool
 TimeManagement::testValidTime(FederationTime theTime)
 {
+       RTIfedTime epsilon;
+       
+   epsilon.setEpsilon();
    if (_avancee_en_cours == PAS_D_AVANCEE) {
       if (_type_granted_state == AFTER_TAR_OR_NER_WITH_ZERO_LK) {
          if (theTime <= _heure_courante)
-            return 0;
+            return false;
       }
       else {  // AFTER_TAR_OR_NER or AFTER_TARA_OR_NARA
-         if (theTime < _heure_courante + _lookahead_courant)
-            return 0;
+         if (theTime + epsilon.getTime() < _heure_courante + 
_lookahead_courant)
+            return false;
       }
    }
    else {
       if (_type_granted_state == AFTER_TAR_OR_NER_WITH_ZERO_LK) {
          if (theTime <= date_avancee)
-            return 0;
+            return false;
       }
       else {  // AFTER_TAR_OR_NER or AFTER_TARA_OR_NARA
-         if (theTime < date_avancee + _lookahead_courant)
-            return 0;
+         if (theTime + epsilon.getTime() < date_avancee + _lookahead_courant)
+            return false;
       }
    }
-   return 1;
+   return true;
 }
 
 // ----------------------------------------------------------------------------
@@ -918,4 +921,4 @@
 
 }} // namespaces
 
-// $Id: TimeManagement.cc,v 3.33 2008/04/26 14:59:41 erk Exp $
+// $Id: TimeManagement.cc,v 3.34 2008/04/30 17:01:09 erk Exp $




reply via email to

[Prev in Thread] Current Thread [Next in Thread]