certi-cvs
[Top][All Lists]
Advanced

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

certi RTIA/ObjectManagement.cc RTIA/ObjectManag...


From: certi-cvs
Subject: certi RTIA/ObjectManagement.cc RTIA/ObjectManag...
Date: Wed, 05 Dec 2007 12:29:41 +0000

CVSROOT:        /sources/certi
Module name:    certi
Changes by:     Christian Stenzel <approx>      07/12/05 12:29:41

Modified files:
        RTIA           : ObjectManagement.cc ObjectManagement.hh 
                         RTIA_federate.cc RTIA_network.cc 
                         TimeManagement.cc 
        RTIG           : Federation.cc Federation.hh FederationsList.cc 
                         FederationsList.hh RTIG_processing.cc 
        libCERTI       : Message_R.cc Message_W.cc NetworkMessage_RW.cc 
                         ObjectClass.cc ObjectClass.hh ObjectClassSet.cc 
                         ObjectClassSet.hh RootObject.cc RootObject.hh 
        libRTI         : RTIambPrivateRefs.cc RTIambassador.cc 

Log message:
        deleteObjectInstance with and without additional time argument
        correct calling of federate service removeObjectInstance

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/ObjectManagement.cc?cvsroot=certi&r1=3.30&r2=3.31
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/ObjectManagement.hh?cvsroot=certi&r1=3.16&r2=3.17
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/RTIA_federate.cc?cvsroot=certi&r1=3.54&r2=3.55
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/RTIA_network.cc?cvsroot=certi&r1=3.15&r2=3.16
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/TimeManagement.cc?cvsroot=certi&r1=3.23&r2=3.24
http://cvs.savannah.gnu.org/viewcvs/certi/RTIG/Federation.cc?cvsroot=certi&r1=3.70&r2=3.71
http://cvs.savannah.gnu.org/viewcvs/certi/RTIG/Federation.hh?cvsroot=certi&r1=3.43&r2=3.44
http://cvs.savannah.gnu.org/viewcvs/certi/RTIG/FederationsList.cc?cvsroot=certi&r1=3.45&r2=3.46
http://cvs.savannah.gnu.org/viewcvs/certi/RTIG/FederationsList.hh?cvsroot=certi&r1=3.35&r2=3.36
http://cvs.savannah.gnu.org/viewcvs/certi/RTIG/RTIG_processing.cc?cvsroot=certi&r1=3.44&r2=3.45
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/Message_R.cc?cvsroot=certi&r1=3.8&r2=3.9
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/Message_W.cc?cvsroot=certi&r1=3.9&r2=3.10
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NetworkMessage_RW.cc?cvsroot=certi&r1=3.33&r2=3.34
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClass.cc?cvsroot=certi&r1=3.40&r2=3.41
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClass.hh?cvsroot=certi&r1=3.30&r2=3.31
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClassSet.cc?cvsroot=certi&r1=3.30&r2=3.31
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClassSet.hh?cvsroot=certi&r1=3.25&r2=3.26
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/RootObject.cc?cvsroot=certi&r1=3.30&r2=3.31
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/RootObject.hh?cvsroot=certi&r1=3.25&r2=3.26
http://cvs.savannah.gnu.org/viewcvs/certi/libRTI/RTIambPrivateRefs.cc?cvsroot=certi&r1=3.7&r2=3.8
http://cvs.savannah.gnu.org/viewcvs/certi/libRTI/RTIambassador.cc?cvsroot=certi&r1=3.59&r2=3.60

Patches:
Index: RTIA/ObjectManagement.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/ObjectManagement.cc,v
retrieving revision 3.30
retrieving revision 3.31
diff -u -b -r3.30 -r3.31
--- RTIA/ObjectManagement.cc    16 Nov 2007 15:45:01 -0000      3.30
+++ RTIA/ObjectManagement.cc    5 Dec 2007 12:29:39 -0000       3.31
@@ -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: ObjectManagement.cc,v 3.30 2007/11/16 15:45:01 erk Exp $
+// $Id: ObjectManagement.cc,v 3.31 2007/12/05 12:29:39 approx Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -397,9 +397,10 @@
 }
 
 // ----------------------------------------------------------------------------
-//! deleteObject
+//! deleteObject with time
 EventRetractionHandle
 ObjectManagement::deleteObject(ObjectHandle theObjectHandle,
+                              FederationTime theTime,  
                                const char *theTag,
                                TypeException &e)
 {
@@ -407,6 +408,8 @@
 
     req.type = NetworkMessage::DELETE_OBJECT ;
     req.object = theObjectHandle ;
+    req.setBoolean(true);
+    req.date = theTime;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
 
@@ -416,17 +419,45 @@
 
     e = rep.exception ;
 
-   if (e == e_NO_EXCEPTION)
+    if (e == e_NO_EXCEPTION) {
         rootObject->deleteObjectInstance(fm->federate, theObjectHandle, 
theTag);
+    }
 
     return rep.eventRetraction ;
 }
 
 // ----------------------------------------------------------------------------
-//! removeObject
+//! deleteObject without time
+void
+ObjectManagement::deleteObject(ObjectHandle theObjectHandle,
+                               const char *theTag,
+                               TypeException &e)
+{
+    NetworkMessage req, rep ;
+
+    req.type = NetworkMessage::DELETE_OBJECT ;
+    req.object = theObjectHandle ;
+    req.setBoolean(false);
+    req.federation = fm->_numero_federation ;
+    req.federate = fm->federate ;
+
+    strcpy(req.label, theTag);
+    comm->sendMessage(&req);
+    comm->waitMessage(&rep, NetworkMessage::DELETE_OBJECT, req.federate);
+
+    e = rep.exception ;
+
+    if (e == e_NO_EXCEPTION) {
+        rootObject->deleteObjectInstance(fm->federate, theObjectHandle, 
theTag);
+    }
+}
+
+// ----------------------------------------------------------------------------
+//! removeObject with time
 void
 ObjectManagement::removeObject(ObjectHandle the_object,
                                FederateHandle the_federate,
+                              FederationTime theTime,
                                const char *the_tag,
                                EventRetractionHandle the_event,
                                TypeException &)
@@ -437,22 +468,33 @@
     req.setObject(the_object);
     req.setEventRetraction(the_event);
     req.setTag(the_tag);
+    req.setBoolean(true);
 
     // BUG: On fait quoi de la reponse ?
     comm->requestFederateService(&req, &rep);
 
-    rootObject->deleteObjectInstance(the_federate, the_object, the_tag);
+    rootObject->deleteObjectInstance(the_federate, the_object, theTime, 
the_tag);
 }
 
 // ----------------------------------------------------------------------------
-//! removeObject
+//! removeObject without time
 void
-ObjectManagement::removeObject(ObjectHandle,
-                               ObjectRemovalReason,
+ObjectManagement::removeObject(ObjectHandle the_object,
+                               FederateHandle the_federate,
+                               const char *the_tag,
                                TypeException &)
 {
-    printf("ObjectManagement.cc: RemoveObject(2) not implemented.\n");
-    throw RTIinternalError("");
+    Message req, rep ;
+
+    req.type = Message::REMOVE_OBJECT_INSTANCE ;
+    req.setObject(the_object);
+    req.setTag(the_tag);
+    req.setBoolean(false);
+    
+    // BUG: On fait quoi de la reponse ?
+    comm->requestFederateService(&req, &rep);
+
+    rootObject->deleteObjectInstance(the_federate, the_object, the_tag);
 }
 
 // ----------------------------------------------------------------------------
@@ -728,4 +770,4 @@
 
 }} // namespace certi/rtia
 
-// $Id: ObjectManagement.cc,v 3.30 2007/11/16 15:45:01 erk Exp $
+// $Id: ObjectManagement.cc,v 3.31 2007/12/05 12:29:39 approx Exp $

Index: RTIA/ObjectManagement.hh
===================================================================
RCS file: /sources/certi/certi/RTIA/ObjectManagement.hh,v
retrieving revision 3.16
retrieving revision 3.17
diff -u -b -r3.16 -r3.17
--- RTIA/ObjectManagement.hh    6 Nov 2007 10:05:06 -0000       3.16
+++ RTIA/ObjectManagement.hh    5 Dec 2007 12:29:39 -0000       3.17
@@ -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: ObjectManagement.hh,v 3.16 2007/11/06 10:05:06 rousse Exp $
+// $Id: ObjectManagement.hh,v 3.17 2007/12/05 12:29:39 approx Exp $
 // ----------------------------------------------------------------------------
 
 #ifndef _CERTI_RTIA_OM
@@ -125,15 +125,26 @@
                             TypeException &e);
 
     EventRetractionHandle deleteObject(ObjectHandle theObjectHandle,
+                                      FederationTime theTime,  
+                                       const char *theTag,
+                                       TypeException &e);
+
+    void deleteObject(ObjectHandle theObjectHandle,
                                        const char *theTag,
                                        TypeException &e);
 
     void removeObject(ObjectHandle theObjectHandle,
                       FederateHandle theFederateHandle,
+                     FederationTime theTime,
                       const char *theTag,
                       EventRetractionHandle theHandle,
                       TypeException &e);
 
+    void removeObject(ObjectHandle theObjectHandle,
+                      FederateHandle theFederateHandle,
+                      const char *theTag,
+                      TypeException &e);
+
     void removeObject(ObjectHandle theObject,
                       ObjectRemovalReason theReason,
                       TypeException &e);
@@ -213,4 +224,4 @@
 
 #endif // _CERTI_RTIA_OM
 
-// $Id: ObjectManagement.hh,v 3.16 2007/11/06 10:05:06 rousse Exp $
+// $Id: ObjectManagement.hh,v 3.17 2007/12/05 12:29:39 approx Exp $

Index: RTIA/RTIA_federate.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/RTIA_federate.cc,v
retrieving revision 3.54
retrieving revision 3.55
diff -u -b -r3.54 -r3.55
--- RTIA/RTIA_federate.cc       29 Nov 2007 16:51:15 -0000      3.54
+++ RTIA/RTIA_federate.cc       5 Dec 2007 12:29:39 -0000       3.55
@@ -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: RTIA_federate.cc,v 3.54 2007/11/29 16:51:15 rousse Exp $
+// $Id: RTIA_federate.cc,v 3.55 2007/12/05 12:29:39 approx Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -408,10 +408,35 @@
       }
         break ;
 
-      case Message::DELETE_OBJECT_INSTANCE:
-        D.Out(pdTrace, "Receiving Message from Federate, type DeleteObject.");
-        rep.setEventRetraction(om->deleteObject(req->getObject(), 
req->getTag(),
+      case Message::DELETE_OBJECT_INSTANCE: {
+          
+       G.Out(pdGendoc,"D_O_I into RTIA::chooseFederateProcessing") ;
+
+       try {
+           if ( req->getBoolean() ) {
+               D.Out(pdTrace, 
+       "Receiving Message from Federate, type DeleteObjectInstance with \
+        TIMESTAMP.");
+                rep.setEventRetraction(
+                       om->deleteObject(
+                               req->getObject(), 
+                               req->getFederationTime(),
+                               req->getTag(), 
                                                 e));
+           }
+           else {
+               D.Out(pdTrace, 
+       "Receiving Message from Federate, type DeleteObjectInstance without \
+        TIMESTAMP.");
+               om->deleteObject(
+                       req->getObject(), 
+                       req->getTag(), 
+                       e);
+           }
+       } catch (Exception *e) {
+           throw e;
+       }
+      }
         break ;
 
       case Message::CHANGE_ATTRIBUTE_TRANSPORTATION_TYPE:
@@ -1225,4 +1250,4 @@
 
 }} // namespace certi/rtia
 
-// $Id: RTIA_federate.cc,v 3.54 2007/11/29 16:51:15 rousse Exp $
+// $Id: RTIA_federate.cc,v 3.55 2007/12/05 12:29:39 approx Exp $

Index: RTIA/RTIA_network.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/RTIA_network.cc,v
retrieving revision 3.15
retrieving revision 3.16
diff -u -b -r3.15 -r3.16
--- RTIA/RTIA_network.cc        29 Nov 2007 16:51:15 -0000      3.15
+++ RTIA/RTIA_network.cc        5 Dec 2007 12:29:39 -0000       3.16
@@ -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: RTIA_network.cc,v 3.15 2007/11/29 16:51:15 rousse Exp $
+// $Id: RTIA_network.cc,v 3.16 2007/12/05 12:29:39 approx Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -190,15 +190,18 @@
 
       case NetworkMessage::REMOVE_OBJECT:
       {
-          D.Out(pdTrace, "Receving Message from RTIG, type 
NetworkMessage::REMOVE_OBJECT.");
+          D.Out(pdTrace, "Receving Message from RTIG, \
+                         type NetworkMessage::REMOVE_OBJECT.");
 
-          if (tm->requestContraintState()) {
+          if (tm->requestContraintState() && msg->getBoolean()) {
               // Verify that received TSO timestamp is >= current
               // time + lookahead
               queues->insertTsoMessage(msg);
           }
-          else
+          else {
+             msg->setBoolean(false);
               queues->insertFifoMessage(msg);
+         }
 
           break ;
       }
@@ -323,4 +326,4 @@
 
 }} // namespace certi/rtia
 
-// $Id: RTIA_network.cc,v 3.15 2007/11/29 16:51:15 rousse Exp $
+// $Id: RTIA_network.cc,v 3.16 2007/12/05 12:29:39 approx Exp $

Index: RTIA/TimeManagement.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/TimeManagement.cc,v
retrieving revision 3.23
retrieving revision 3.24
diff -u -b -r3.23 -r3.24
--- RTIA/TimeManagement.cc      27 Nov 2007 14:39:49 -0000      3.23
+++ RTIA/TimeManagement.cc      5 Dec 2007 12:29:39 -0000       3.24
@@ -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.23 2007/11/27 14:39:49 siron Exp $
+// $Id: TimeManagement.cc,v 3.24 2007/12/05 12:29:39 approx Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -222,11 +222,20 @@
       }
 
       case NetworkMessage::REMOVE_OBJECT:
+          if (msg.getBoolean()) {
         om->removeObject(msg.object,
                          msg.federate,
+                                msg.date,
                          msg.label,
                          msg.eventRetraction,
                          msg.exception);
+         }
+         else {
+               om->removeObject(msg.object,
+                                msg.federate,
+                                msg.label,
+                                msg.exception);
+         }
         break ;
 
       case NetworkMessage::INFORM_ATTRIBUTE_OWNERSHIP:
@@ -747,4 +756,4 @@
 
 }} // namespaces
 
-// $Id: TimeManagement.cc,v 3.23 2007/11/27 14:39:49 siron Exp $
+// $Id: TimeManagement.cc,v 3.24 2007/12/05 12:29:39 approx Exp $

Index: RTIG/Federation.cc
===================================================================
RCS file: /sources/certi/certi/RTIG/Federation.cc,v
retrieving revision 3.70
retrieving revision 3.71
diff -u -b -r3.70 -r3.71
--- RTIG/Federation.cc  29 Nov 2007 16:51:15 -0000      3.70
+++ RTIG/Federation.cc  5 Dec 2007 12:29:39 -0000       3.71
@@ -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: Federation.cc,v 3.70 2007/11/29 16:51:15 rousse Exp $
+// $Id: Federation.cc,v 3.71 2007/12/05 12:29:39 approx Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -727,6 +727,35 @@
 /** Removes an object instance from federation.
     @param federate Federate requesting removal
     @param id Object handle
+    @param theTime Federation Time
+    @param tag Label for this operation
+ */
+void
+Federation::deleteObject(FederateHandle federate,
+                         ObjectHandle id,
+                        FederationTime theTime,
+                         const char *tag)
+    throw (FederateNotExecutionMember,
+           DeletePrivilegeNotHeld,
+           ObjectNotKnown,
+           SaveInProgress,
+           RestoreInProgress,
+          InvalidFederationTime,
+           RTIinternalError)
+{
+    // It may throw FederateNotExecutionMember.
+    this->check(federate);
+
+    D.Out(pdRegister, "Federation %d: Federate %d destroys object %d.",
+          this->handle, federate, id);
+    
+    root->deleteObjectInstance(federate, id, theTime, tag);
+    objectHandles.free(id);
+}
+// ----------------------------------------------------------------------------
+/** Removes an object instance from federation.
+    @param federate Federate requesting removal
+    @param id Object handle
     @param tag Label for this operation
  */
 void
@@ -2210,5 +2239,5 @@
 
 }} // namespace certi/rtig
 
-// $Id: Federation.cc,v 3.70 2007/11/29 16:51:15 rousse Exp $
+// $Id: Federation.cc,v 3.71 2007/12/05 12:29:39 approx Exp $
 

Index: RTIG/Federation.hh
===================================================================
RCS file: /sources/certi/certi/RTIG/Federation.hh,v
retrieving revision 3.43
retrieving revision 3.44
diff -u -b -r3.43 -r3.44
--- RTIG/Federation.hh  16 Nov 2007 15:04:22 -0000      3.43
+++ RTIG/Federation.hh  5 Dec 2007 12:29:39 -0000       3.44
@@ -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: Federation.hh,v 3.43 2007/11/16 15:04:22 rousse Exp $
+// $Id: Federation.hh,v 3.44 2007/12/05 12:29:39 approx Exp $
 // ----------------------------------------------------------------------------
 
 #ifndef _CERTI_RTIG_FEDERATION_HH
@@ -222,6 +222,18 @@
 
     void deleteObject(FederateHandle theFederateHandle,
                       ObjectHandle theObjectHandle,
+                     FederationTime theTime,
+                      const char *theUserTag)
+        throw (FederateNotExecutionMember,
+               DeletePrivilegeNotHeld,
+               ObjectNotKnown,
+               SaveInProgress,
+               RestoreInProgress,
+              InvalidFederationTime,
+               RTIinternalError);
+
+    void deleteObject(FederateHandle theFederateHandle,
+                      ObjectHandle theObjectHandle,
                       const char *theUserTag)
         throw (FederateNotExecutionMember,
                DeletePrivilegeNotHeld,
@@ -576,4 +588,4 @@
 
 #endif // _CERTI_RTIG_FEDERATION_HH
 
-// $Id: Federation.hh,v 3.43 2007/11/16 15:04:22 rousse Exp $
+// $Id: Federation.hh,v 3.44 2007/12/05 12:29:39 approx Exp $

Index: RTIG/FederationsList.cc
===================================================================
RCS file: /sources/certi/certi/RTIG/FederationsList.cc,v
retrieving revision 3.45
retrieving revision 3.46
diff -u -b -r3.45 -r3.46
--- RTIG/FederationsList.cc     16 Nov 2007 15:04:22 -0000      3.45
+++ RTIG/FederationsList.cc     5 Dec 2007 12:29:39 -0000       3.46
@@ -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: FederationsList.cc,v 3.45 2007/11/16 15:04:22 rousse Exp $
+// $Id: FederationsList.cc,v 3.46 2007/12/05 12:29:39 approx Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -241,7 +241,37 @@
 }
 
 // ----------------------------------------------------------------------------
-// destroyObject
+// destroyObject with time
+void
+FederationsList::destroyObject(Handle handle,
+                              FederateHandle federate,
+                              ObjectHandle id,
+                              FederationTime theTime,
+                              const char *tag)
+    throw (FederateNotExecutionMember,
+           FederationExecutionDoesNotExist,
+           DeletePrivilegeNotHeld,
+           ObjectNotKnown,
+           SaveInProgress,
+           RestoreInProgress,
+          InvalidFederationTime,
+           RTIinternalError)
+{
+    Federation *federation = NULL ;
+
+    // It may throw RTIinternalError.
+    checkHandle(handle);
+    checkHandle(federate);
+
+    // It may throw FederationExecutionDoesNotExist.
+    searchFederation(handle, federation);
+
+    federation->deleteObject(federate, id, theTime, tag);
+
+}
+
+// ----------------------------------------------------------------------------
+// destroyObject without time
 void
 FederationsList::destroyObject(Handle handle,
                                FederateHandle federate,
@@ -1480,5 +1510,5 @@
 
 }} // certi::rtig
 
-// EOF $Id: FederationsList.cc,v 3.45 2007/11/16 15:04:22 rousse Exp $
+// EOF $Id: FederationsList.cc,v 3.46 2007/12/05 12:29:39 approx Exp $
 

Index: RTIG/FederationsList.hh
===================================================================
RCS file: /sources/certi/certi/RTIG/FederationsList.hh,v
retrieving revision 3.35
retrieving revision 3.36
diff -u -b -r3.35 -r3.36
--- RTIG/FederationsList.hh     16 Nov 2007 15:04:22 -0000      3.35
+++ RTIG/FederationsList.hh     5 Dec 2007 12:29:40 -0000       3.36
@@ -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: FederationsList.hh,v 3.35 2007/11/16 15:04:22 rousse Exp $
+// $Id: FederationsList.hh,v 3.36 2007/12/05 12:29:40 approx Exp $
 // ----------------------------------------------------------------------------
 
 #ifndef _CERTI_RTIG_FEDERATIONS_LIST_HH
@@ -263,6 +263,20 @@
     void destroyObject(Handle theHandle,
                        FederateHandle theFederateHandle,
                        ObjectHandle theObjectHandle,
+                      FederationTime theTime,
+                      const char *theUserTag)
+        throw (FederateNotExecutionMember,
+               FederationExecutionDoesNotExist,
+               DeletePrivilegeNotHeld,
+               ObjectNotKnown,
+               SaveInProgress,
+               RestoreInProgress,
+              InvalidFederationTime,
+               RTIinternalError);
+ 
+    void destroyObject(Handle theHandle,
+                       FederateHandle theFederateHandle,
+                       ObjectHandle theObjectHandle,
                        const char *theUserTag)
         throw (FederateNotExecutionMember,
                FederationExecutionDoesNotExist,
@@ -562,4 +576,4 @@
 
 #endif // _CERTI_RTIG_FEDERATIONS_LIST_HH
 
-// $Id: FederationsList.hh,v 3.35 2007/11/16 15:04:22 rousse Exp $
+// $Id: FederationsList.hh,v 3.36 2007/12/05 12:29:40 approx Exp $

Index: RTIG/RTIG_processing.cc
===================================================================
RCS file: /sources/certi/certi/RTIG/RTIG_processing.cc,v
retrieving revision 3.44
retrieving revision 3.45
diff -u -b -r3.44 -r3.45
--- RTIG/RTIG_processing.cc     16 Nov 2007 15:04:22 -0000      3.44
+++ RTIG/RTIG_processing.cc     5 Dec 2007 12:29:40 -0000       3.45
@@ -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: RTIG_processing.cc,v 3.44 2007/11/16 15:04:22 rousse Exp $
+// $Id: RTIG_processing.cc,v 3.45 2007/12/05 12:29:40 approx Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -789,16 +789,27 @@
 }
 
 // ----------------------------------------------------------------------------
-// processdeleteObject
+// processDeleteObject
 void
 RTIG::processDeleteObject(Socket *link, NetworkMessage *req)
 {
+    G.Out(pdGendoc,"BEGIN ** DELETE OBJECT INSTANCE service **");
+    G.Out(pdGendoc,"enter RTIG::processDeleteObject");
     auditServer << "ObjID = %u" << req->object ;
 
+    if ( req->getBoolean() ) {
     federations.destroyObject(req->federation,
                                req->federate,
                                req->object,
+                                 req->date,
                                req->label);
+    }
+    else {
+       federations.destroyObject(req->federation,
+                                 req->federate,
+                                  req->object,
+                                  req->label);
+    }
 
     D.Out(pdRegister, "Object # %u of Federation %u has been deleted.",
           req->object, req->federation);
@@ -810,6 +821,9 @@
     rep.object = req->object ;
 
     rep.write(link); // send answer to RTIA
+    
+    G.Out(pdGendoc,"exit RTIG::processDeleteObject");
+    G.Out(pdGendoc,"END ** DELETE OBJECT INSTANCE **");
 }
 
 // ----------------------------------------------------------------------------
@@ -1304,4 +1318,4 @@
 
 }} // namespace certi/rtig
 
-// $Id: RTIG_processing.cc,v 3.44 2007/11/16 15:04:22 rousse Exp $
+// $Id: RTIG_processing.cc,v 3.45 2007/12/05 12:29:40 approx Exp $

Index: libCERTI/Message_R.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/Message_R.cc,v
retrieving revision 3.8
retrieving revision 3.9
diff -u -b -r3.8 -r3.9
--- libCERTI/Message_R.cc       13 Nov 2007 13:25:40 -0000      3.8
+++ libCERTI/Message_R.cc       5 Dec 2007 12:29:40 -0000       3.9
@@ -17,7 +17,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: Message_R.cc,v 3.8 2007/11/13 13:25:40 rousse Exp $
+// $Id: Message_R.cc,v 3.9 2007/12/05 12:29:40 approx Exp $
 // ----------------------------------------------------------------------------
 
 
@@ -318,6 +318,7 @@
             readName(body);
             readLabel(body);
             readResignAction(body);
+            boolean = body.readLongInt();
             break ;
 
           // Body contains object 
@@ -703,4 +704,4 @@
 
 } // namespace certi
 
-// $Id: Message_R.cc,v 3.8 2007/11/13 13:25:40 rousse Exp $
+// $Id: Message_R.cc,v 3.9 2007/12/05 12:29:40 approx Exp $

Index: libCERTI/Message_W.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/Message_W.cc,v
retrieving revision 3.9
retrieving revision 3.10
diff -u -b -r3.9 -r3.10
--- libCERTI/Message_W.cc       13 Nov 2007 13:25:40 -0000      3.9
+++ libCERTI/Message_W.cc       5 Dec 2007 12:29:40 -0000       3.10
@@ -17,7 +17,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: Message_W.cc,v 3.9 2007/11/13 13:25:40 rousse Exp $
+// $Id: Message_W.cc,v 3.10 2007/12/05 12:29:40 approx Exp $
 // ----------------------------------------------------------------------------
 
 
@@ -326,6 +326,7 @@
             body.writeString(name);
             body.writeString(label);
             writeResignAction(body);
+           body.writeLongInt(boolean);
             break ;
 
           // Body contains object  
@@ -688,4 +689,4 @@
 
 } // namespace certi
 
-// $Id: Message_W.cc,v 3.9 2007/11/13 13:25:40 rousse Exp $
+// $Id: Message_W.cc,v 3.10 2007/12/05 12:29:40 approx Exp $

Index: libCERTI/NetworkMessage_RW.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/NetworkMessage_RW.cc,v
retrieving revision 3.33
retrieving revision 3.34
diff -u -b -r3.33 -r3.34
--- libCERTI/NetworkMessage_RW.cc       29 Nov 2007 16:51:15 -0000      3.33
+++ libCERTI/NetworkMessage_RW.cc       5 Dec 2007 12:29:40 -0000       3.34
@@ -16,7 +16,7 @@
 // License along with this program ; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 //
-// $Id: NetworkMessage_RW.cc,v 3.33 2007/11/29 16:51:15 rousse Exp $
+// $Id: NetworkMessage_RW.cc,v 3.34 2007/12/05 12:29:40 approx Exp $
 // ----------------------------------------------------------------------------
 
 
@@ -169,6 +169,7 @@
       case DELETE_OBJECT:
       case REMOVE_OBJECT:
        object = body.readLongInt();
+       boolean = body.readLongInt();   // true means with time
        readLabel(body);
        break ;
 
@@ -358,6 +359,8 @@
       case ANNOUNCE_SYNCHRONIZATION_POINT:
       case DELETE_OBJECT:
       case REMOVE_OBJECT:
+        date = Header.VP.O_I.date;
+       break;
       case CLOSE_CONNEXION:
       case RESIGN_FEDERATION_EXECUTION:
       case IS_ATTRIBUTE_OWNED_BY_FEDERATE:
@@ -601,6 +604,7 @@
       case DELETE_OBJECT:
       case REMOVE_OBJECT:
        body.writeLongInt(object);
+       body.writeLongInt(boolean);    // true means with time (stored in 
header)
        body.writeString(label);
        break ;
 
@@ -868,9 +872,14 @@
        break ;
 
       case DELETE_OBJECT:
+        Header.bodySize = 1;
+       Header.VP.O_I.date = date;
+       break;
       case REMOVE_OBJECT:
        // body Contains ObjectHandle, and label
        Header.bodySize = 1 ;
+        if ( boolean)
+           Header.VP.O_I.date = date ;
        break ;
 
        // -- time Variable Part(No body)[Continued] --
@@ -971,4 +980,4 @@
 
 } // namespace certi
 
-// $Id: NetworkMessage_RW.cc,v 3.33 2007/11/29 16:51:15 rousse Exp $
+// $Id: NetworkMessage_RW.cc,v 3.34 2007/12/05 12:29:40 approx Exp $

Index: libCERTI/ObjectClass.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClass.cc,v
retrieving revision 3.40
retrieving revision 3.41
diff -u -b -r3.40 -r3.41
--- libCERTI/ObjectClass.cc     29 Nov 2007 16:51:15 -0000      3.40
+++ libCERTI/ObjectClass.cc     5 Dec 2007 12:29:40 -0000       3.41
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: ObjectClass.cc,v 3.40 2007/11/29 16:51:15 rousse Exp $
+// $Id: ObjectClass.cc,v 3.41 2007/12/05 12:29:40 approx Exp $
 // ----------------------------------------------------------------------------
 
 #include  "Object.hh"
@@ -313,7 +313,8 @@
 }
 
 // ----------------------------------------------------------------------------
-/*! Delete the object instance 'theObjectHandle', and starts to
+/* Delete Instance with time.
+   Delete the object instance 'theObjectHandle', and starts to
   broadcast the RemoveObject message. Return a BroadcastList of
   Federates, in order to allow our ObjectClassSet to go on with
   the message broadcasting, by giving the list to our parent
@@ -322,11 +323,13 @@
 ObjectClassBroadcastList *
 ObjectClass::deleteInstance(FederateHandle the_federate,
                             ObjectHandle the_object,
+                           FederationTime theTime,
                             const char *the_tag)
     throw (DeletePrivilegeNotHeld,
            ObjectNotKnown,
            RTIinternalError)
 {
+
     // 1. Pre-conditions checking(may throw ObjectNotKnown)
     Object *object = getInstanceWithID(the_object);
 
@@ -360,6 +363,81 @@
         answer->exception = e_NO_EXCEPTION ;
         answer->objectClass = handle ; // Class Handle
         answer->object = the_object ;
+        
+       // with time
+        answer->date = theTime ;
+        answer->boolean = true ;
+        
+       strcpy(answer->label, the_tag);
+
+        ocbList = new ObjectClassBroadcastList(answer, 0);
+        broadcastClassMessage(ocbList);
+    }
+    else {
+        D.Out(pdRegister,
+              "Object %u deleted in class %u, no broadcast to do.",
+              the_object, handle);
+    }
+
+    // Return the BroadcastList in case it had to be passed to the parent
+    // class.
+    return ocbList ;
+}
+
+// ----------------------------------------------------------------------------
+/* Delete Instance without time.
+   Delete the object instance 'theObjectHandle', and starts to
+   broadcast the RemoveObject message. Return a BroadcastList of
+   Federates, in order to allow our ObjectClassSet to go on with
+   the message broadcasting, by giving the list to our parent
+   class.
+*/
+ObjectClassBroadcastList *
+ObjectClass::deleteInstance(FederateHandle the_federate,
+                            ObjectHandle the_object,
+                            const char *the_tag)
+    throw (DeletePrivilegeNotHeld,
+           ObjectNotKnown,
+           RTIinternalError)
+{
+    // 1. Pre-conditions checking(may throw ObjectNotKnown)
+    Object *object = getInstanceWithID(the_object);
+
+    // Is the Federate really the Object Owner?(Checked only on RTIG)
+    if ((server != 0) && (object->getOwner() != the_federate)) {
+        D.Out(pdExcept, "Delete Object %d: Federate %d not owner.",
+              the_object, the_federate);
+        throw DeletePrivilegeNotHeld("");
+    }
+
+    // 2. Remove Instance from list.
+    list<Object *>::iterator o ;
+    for (o = objectSet.begin(); o != objectSet.end(); o++) {
+        if ((*o)->getHandle() == the_object) {
+            objectSet.erase(o); // i is dereferenced.
+            break ;
+        }
+    }
+
+    // 3. Prepare and broadcast message.
+    ObjectClassBroadcastList *ocbList = NULL ;
+    if (server != NULL) {
+        D.Out(pdRegister,
+              "Object %u deleted in class %u, now broadcasting...",
+              the_object, handle);
+
+        NetworkMessage *answer = new NetworkMessage ;
+        answer->type = NetworkMessage::REMOVE_OBJECT ;
+        answer->federation = server->federation();
+        answer->federate = the_federate ;
+        answer->exception = e_NO_EXCEPTION ;
+        answer->objectClass = handle ; // Class Handle
+        answer->object = the_object ;
+        
+       // without time
+        answer->date = 0 ;
+        answer->boolean = false ;
+        
         strcpy(answer->label, the_tag);
 
         ocbList = new ObjectClassBroadcastList(answer, 0);
@@ -1751,4 +1829,4 @@
 
 } // namespace certi
 
-// $Id: ObjectClass.cc,v 3.40 2007/11/29 16:51:15 rousse Exp $
+// $Id: ObjectClass.cc,v 3.41 2007/12/05 12:29:40 approx Exp $

Index: libCERTI/ObjectClass.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClass.hh,v
retrieving revision 3.30
retrieving revision 3.31
diff -u -b -r3.30 -r3.31
--- libCERTI/ObjectClass.hh     31 Oct 2007 10:30:22 -0000      3.30
+++ libCERTI/ObjectClass.hh     5 Dec 2007 12:29:40 -0000       3.31
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: ObjectClass.hh,v 3.30 2007/10/31 10:30:22 erk Exp $
+// $Id: ObjectClass.hh,v 3.31 2007/12/05 12:29:40 approx Exp $
 // ----------------------------------------------------------------------------
 
 #ifndef _CERTI_OBJECT_CLASS_HH
@@ -176,6 +176,14 @@
     // Instance Management
     ObjectClassBroadcastList *deleteInstance(FederateHandle theFederateHandle,
                                              ObjectHandle theObjectHandle,
+                                            FederationTime theTime,
+                                             const char *theUserTag)
+        throw (DeletePrivilegeNotHeld,
+               ObjectNotKnown,
+               RTIinternalError);
+
+    ObjectClassBroadcastList *deleteInstance(FederateHandle theFederateHandle,
+                                             ObjectHandle theObjectHandle,
                                              const char *theUserTag)
         throw (DeletePrivilegeNotHeld,
                ObjectNotKnown,
@@ -252,4 +260,4 @@
 
 #endif // _CERTI_OBJECT_CLASS_HH
 
-// $Id: ObjectClass.hh,v 3.30 2007/10/31 10:30:22 erk Exp $
+// $Id: ObjectClass.hh,v 3.31 2007/12/05 12:29:40 approx Exp $

Index: libCERTI/ObjectClassSet.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClassSet.cc,v
retrieving revision 3.30
retrieving revision 3.31
diff -u -b -r3.30 -r3.31
--- libCERTI/ObjectClassSet.cc  29 Nov 2007 16:51:16 -0000      3.30
+++ libCERTI/ObjectClassSet.cc  5 Dec 2007 12:29:40 -0000       3.31
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: ObjectClassSet.cc,v 3.30 2007/11/29 16:51:16 rousse Exp $
+// $Id: ObjectClassSet.cc,v 3.31 2007/12/05 12:29:40 approx Exp $
 // ----------------------------------------------------------------------------
 
 // Project
@@ -132,7 +132,50 @@
 }
 
 // ----------------------------------------------------------------------------
-//! deleteObject.
+//! deleteObject with time.
+void
+ObjectClassSet::deleteObject(FederateHandle federate,
+                             ObjectHandle object,
+                            FederationTime theTime,
+                             const char *tag)
+    throw (DeletePrivilegeNotHeld, ObjectNotKnown, RTIinternalError)
+{
+    // It may throw ObjectNotKnown
+    ObjectClass *oclass = getInstanceClass(object);
+
+    D.Out(pdRegister,
+          "Federate %d attempts to delete instance %d in class %d.",
+          federate, object, oclass->getHandle());
+
+    // It may throw a bunch of exceptions.
+    ObjectClassBroadcastList *ocbList = oclass->deleteInstance(federate,
+                                                               object,
+                                                              theTime,
+                                                               tag);
+
+    // Broadcast RemoveObject message recursively
+    ObjectClassHandle current_class = 0 ;
+    if (ocbList != 0) {
+
+        current_class = oclass->getSuperclass();
+
+        while (current_class) {
+            D.Out(pdRegister,
+                  "Broadcasting Remove msg to parent class %d for instance 
%d.",
+                  current_class, object);
+
+            // It may throw ObjectClassNotDefined
+            oclass = getWithHandle(current_class);
+            oclass->broadcastClassMessage(ocbList);
+
+            current_class = oclass->getSuperclass();
+        }
+
+        delete ocbList ;
+    }
+}
+// ----------------------------------------------------------------------------
+//! deleteObject without time.
 void
 ObjectClassSet::deleteObject(FederateHandle federate,
                              ObjectHandle object,
@@ -782,4 +825,4 @@
 
 } // namespace certi
 
-// $Id: ObjectClassSet.cc,v 3.30 2007/11/29 16:51:16 rousse Exp $
+// $Id: ObjectClassSet.cc,v 3.31 2007/12/05 12:29:40 approx Exp $

Index: libCERTI/ObjectClassSet.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClassSet.hh,v
retrieving revision 3.25
retrieving revision 3.26
diff -u -b -r3.25 -r3.26
--- libCERTI/ObjectClassSet.hh  19 Nov 2007 09:29:03 -0000      3.25
+++ libCERTI/ObjectClassSet.hh  5 Dec 2007 12:29:40 -0000       3.26
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: ObjectClassSet.hh,v 3.25 2007/11/19 09:29:03 erk Exp $
+// $Id: ObjectClassSet.hh,v 3.26 2007/12/05 12:29:40 approx Exp $
 // ----------------------------------------------------------------------------
 
 #ifndef _CERTI_OBJECT_CLASS_SET_HH
@@ -92,6 +92,12 @@
     // Object Instance Management
     void deleteObject(FederateHandle theFederateHandle,
                       ObjectHandle theObjectHandle,
+                     FederationTime theTime,
+                      const char *theTag)
+        throw (DeletePrivilegeNotHeld, ObjectNotKnown, RTIinternalError);
+
+    void deleteObject(FederateHandle theFederateHandle,
+                      ObjectHandle theObjectHandle,
                       const char *theTag)
         throw (DeletePrivilegeNotHeld, ObjectNotKnown, RTIinternalError);
 
@@ -204,4 +210,4 @@
 
 #endif // _CERTI_OBJECT_CLASS_SET_HH
 
-// $Id: ObjectClassSet.hh,v 3.25 2007/11/19 09:29:03 erk Exp $
+// $Id: ObjectClassSet.hh,v 3.26 2007/12/05 12:29:40 approx Exp $

Index: libCERTI/RootObject.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/RootObject.cc,v
retrieving revision 3.30
retrieving revision 3.31
diff -u -b -r3.30 -r3.31
--- libCERTI/RootObject.cc      4 Dec 2007 11:00:58 -0000       3.30
+++ libCERTI/RootObject.cc      5 Dec 2007 12:29:40 -0000       3.31
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: RootObject.cc,v 3.30 2007/12/04 11:00:58 erk Exp $
+// $Id: RootObject.cc,v 3.31 2007/12/05 12:29:40 approx Exp $
 // ----------------------------------------------------------------------------
 
 #include "Object.hh"
@@ -258,6 +258,18 @@
 void
 RootObject::deleteObjectInstance(FederateHandle the_federate,
                                  ObjectHandle the_object,
+                                FederationTime theTime,
+                                 const char *the_tag)
+    throw (DeletePrivilegeNotHeld, ObjectNotKnown, RTIinternalError)
+{
+    ObjectClasses->deleteObject(the_federate, the_object, theTime, the_tag);
+    objects->deleteObjectInstance(the_federate, the_object, the_tag);
+}
+
+// ----------------------------------------------------------------------------
+void
+RootObject::deleteObjectInstance(FederateHandle the_federate,
+                                 ObjectHandle the_object,
                                  const char *the_tag)
     throw (DeletePrivilegeNotHeld, ObjectNotKnown, RTIinternalError)
 {
@@ -320,4 +332,4 @@
 
 } // namespace certi
 
-// $Id: RootObject.cc,v 3.30 2007/12/04 11:00:58 erk Exp $
+// $Id: RootObject.cc,v 3.31 2007/12/05 12:29:40 approx Exp $

Index: libCERTI/RootObject.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/RootObject.hh,v
retrieving revision 3.25
retrieving revision 3.26
diff -u -b -r3.25 -r3.26
--- libCERTI/RootObject.hh      19 Nov 2007 14:07:04 -0000      3.25
+++ libCERTI/RootObject.hh      5 Dec 2007 12:29:40 -0000       3.26
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: RootObject.hh,v 3.25 2007/11/19 14:07:04 erk Exp $
+// $Id: RootObject.hh,v 3.26 2007/12/05 12:29:40 approx Exp $
 // ----------------------------------------------------------------------------
 
 #ifndef LIBCERTI_ROOT_OBJECT
@@ -88,6 +88,10 @@
                ObjectAlreadyRegistered,
                RTIinternalError);
     
+    void deleteObjectInstance(FederateHandle, ObjectHandle, 
+                             FederationTime theTime, const char *)
+        throw (DeletePrivilegeNotHeld, ObjectNotKnown, RTIinternalError);
+
     void deleteObjectInstance(FederateHandle, ObjectHandle, const char *)
         throw (DeletePrivilegeNotHeld, ObjectNotKnown, RTIinternalError);
 
@@ -119,4 +123,4 @@
 
 #endif // LIBCERTI_ROOT_OBJECT
 
-// $Id: RootObject.hh,v 3.25 2007/11/19 14:07:04 erk Exp $
+// $Id: RootObject.hh,v 3.26 2007/12/05 12:29:40 approx Exp $

Index: libRTI/RTIambPrivateRefs.cc
===================================================================
RCS file: /sources/certi/certi/libRTI/RTIambPrivateRefs.cc,v
retrieving revision 3.7
retrieving revision 3.8
diff -u -b -r3.7 -r3.8
--- libRTI/RTIambPrivateRefs.cc 27 Nov 2007 08:55:54 -0000      3.7
+++ libRTI/RTIambPrivateRefs.cc 5 Dec 2007 12:29:40 -0000       3.8
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: RTIambPrivateRefs.cc,v 3.7 2007/11/27 08:55:54 erk Exp $
+// $Id: RTIambPrivateRefs.cc,v 3.8 2007/12/05 12:29:40 approx Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -544,4 +544,4 @@
     }
 }
 
-// $Id: RTIambPrivateRefs.cc,v 3.7 2007/11/27 08:55:54 erk Exp $
+// $Id: RTIambPrivateRefs.cc,v 3.8 2007/12/05 12:29:40 approx Exp $

Index: libRTI/RTIambassador.cc
===================================================================
RCS file: /sources/certi/certi/libRTI/RTIambassador.cc,v
retrieving revision 3.59
retrieving revision 3.60
diff -u -b -r3.59 -r3.60
--- libRTI/RTIambassador.cc     27 Nov 2007 08:55:54 -0000      3.59
+++ libRTI/RTIambassador.cc     5 Dec 2007 12:29:41 -0000       3.60
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: RTIambassador.cc,v 3.59 2007/11/27 08:55:54 erk Exp $
+// $Id: RTIambassador.cc,v 3.60 2007/12/05 12:29:41 approx Exp $
 // ----------------------------------------------------------------------------
 
 
@@ -389,10 +389,18 @@
                   } break ;
 
               case Message::REMOVE_OBJECT_INSTANCE: {
-                  
privateRefs->fed_amb->removeObjectInstance(vers_Fed.getObject(),
+                  if (vers_Fed.getBoolean()) {
+                      privateRefs->fed_amb->removeObjectInstance(
+                                                vers_Fed.getObject(),
                                                 vers_Fed.getFedTime(),
                                                 vers_Fed.getTag(),
                                                 vers_Fed.getEventRetraction());
+                 }
+                 else {
+                      privateRefs->fed_amb->removeObjectInstance(
+                                                vers_Fed.getObject(),
+                                                vers_Fed.getTag());
+                 }
               } break ;
 
               case Message::PROVIDE_ATTRIBUTE_VALUE_UPDATE: {
@@ -1227,7 +1235,13 @@
 }
 
 // ----------------------------------------------------------------------------
-// Delete Object
+/** Delete Object with time
+    This service (HLA 1.3) deletes an object instance.
+    As the federation time argument is supplied, an event retraction 
designator is returned.
+    @param theObject Object designator
+    @param theTime Federation time
+    @param theTag user supplied tag
+*/
 EventRetractionHandle
 RTI::RTIambassador::deleteObjectInstance(ObjectHandle theObject,
                                     const FedTime& theTime,
@@ -1248,11 +1262,18 @@
     req.setFedTime(theTime);
     req.setTag(theTag);
 
+    req.setBoolean(true);
+
     privateRefs->executeService(&req, &rep);
     return rep.getEventRetraction();
 }
 
 // ----------------------------------------------------------------------------
+/** Delete Object without time
+    This service (HLA 1.3) deletes an object instance.
+    @param theObject Object designator
+    @param theTag user supplied tag
+*/
 void
 RTI::RTIambassador::deleteObjectInstance(ObjectHandle theObject,
                                     const char *theTag)
@@ -1260,13 +1281,14 @@
           RTI::ConcurrentAccessAttempted, RTI::FederateNotExecutionMember, 
           RTI::DeletePrivilegeNotHeld, RTI::ObjectNotKnown)
 {
-    throw UnimplementedService("");
     Message req, rep ;
 
     req.type = Message::DELETE_OBJECT_INSTANCE ;
     req.setObject(theObject);
     req.setTag(theTag);
 
+    req.setBoolean(false);
+
     privateRefs->executeService(&req, &rep);
 }
 
@@ -2879,4 +2901,4 @@
     privateRefs->executeService(&req, &rep);
 }
 
-// $Id: RTIambassador.cc,v 3.59 2007/11/27 08:55:54 erk Exp $
+// $Id: RTIambassador.cc,v 3.60 2007/12/05 12:29:41 approx Exp $




reply via email to

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