certi-cvs
[Top][All Lists]
Advanced

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

[certi-cvs] certi/RTIA ObjectManagement.cc RTIA_network.cc


From: certi-cvs
Subject: [certi-cvs] certi/RTIA ObjectManagement.cc RTIA_network.cc
Date: Mon, 08 Nov 2010 15:31:34 +0000

CVSROOT:        /sources/certi
Module name:    certi
Changes by:     Eric NOULARD <erk>      10/11/08 15:31:34

Modified files:
        RTIA           : ObjectManagement.cc RTIA_network.cc 

Log message:
        Try a fix for 
        bug #31551 : Error during multi-federate startup
        which seems the same as issue reported by Michael Raab.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/ObjectManagement.cc?cvsroot=certi&r1=3.71&r2=3.72
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/RTIA_network.cc?cvsroot=certi&r1=3.39&r2=3.40

Patches:
Index: ObjectManagement.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/ObjectManagement.cc,v
retrieving revision 3.71
retrieving revision 3.72
diff -u -b -r3.71 -r3.72
--- ObjectManagement.cc 2 Oct 2010 13:20:42 -0000       3.71
+++ ObjectManagement.cc 8 Nov 2010 15:31:34 -0000       3.72
@@ -227,23 +227,10 @@
 
        comm->requestFederateService(&req);
 
-       /* FIXME
-        *
-        * discoverObject tries to auto-registrate a discovered object instance,
-        * if the object is already discovered through a previous invocation of
-        * discoverObject the exceptiobn ObjectAlreadyRegistered is raised.
-        *
-        * This behaviour needs further investigation.
-        * Is it useful to call registerObjectInstance within a federate 
service?
+       /* The registration of the discovered object in RootObject
+        * MUST have been done just before putting DO message in FIFO.
+        * see RTIA_network.cc
         */
-
-       try {
-               // Adding discovered object in federate internal object list.
-               rootObject->registerObjectInstance(fm->federate, the_class, 
the_object,
-                               req.getObjectName());
-       }
-       catch (ObjectAlreadyRegistered) {
-       }
 }
 
 // ----------------------------------------------------------------------------

Index: RTIA_network.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/RTIA_network.cc,v
retrieving revision 3.39
retrieving revision 3.40
diff -u -b -r3.39 -r3.40
--- RTIA_network.cc     10 Aug 2010 16:34:10 -0000      3.39
+++ RTIA_network.cc     8 Nov 2010 15:31:34 -0000       3.40
@@ -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.39 2010/08/10 16:34:10 erk Exp $
+// $Id: RTIA_network.cc,v 3.40 2010/11/08 15:31:34 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -95,9 +95,27 @@
 
       case NetworkMessage::DISCOVER_OBJECT:
       {
-          D.Out(pdTrace, "Receving Message from RTIG, "
-                "type NetworkMessage::DISCOVER_OBJECT.");
+         NM_Discover_Object* DO = static_cast<NM_Discover_Object*>(msg);
+          D.Out(pdTrace, "Receving Message from RTIG, type 
NetworkMessage::DISCOVER_OBJECT.");
           queues->insertFifoMessage(msg);
+                /* FIXME
+                *
+                * discoverObject tries to auto-registrate a discovered object 
instance,
+                * if the object is already discovered through a previous 
invocation of
+                * discoverObject the exception ObjectAlreadyRegistered is 
raised.
+                *
+                * This behavior needs further investigation.
+                * Is it useful to call registerObjectInstance within a 
federate service?
+                */
+
+               try {
+                       // Adding discovered object in federate internal object 
list.
+                       // We MUST update RootObject here
+                       rootObject->registerObjectInstance(fm->federate, 
DO->getObjectClass(), DO->getObject(),DO->getLabel());
+               }
+               catch (ObjectAlreadyRegistered) {
+               }
+
       }
       break;
 
@@ -131,6 +149,8 @@
              {
              // Retrieve order type
              updateOrder = TIMESTAMP;
+             // FIXME we may inspect rootObject for an unknown object which has
+             // (not yet) been discovered...because DiscoverObject is a RO 
message
              ObjectClassHandle och = 
rootObject->objects->getObjectClass(RAV->getObject());
              //std::cerr << "FOUND och = " <<och << "  for object " << 
RAV->getObject() <<std::endl;
              for (uint32_t i=0; i< RAV->getAttributesSize(); ++i)
@@ -381,4 +401,4 @@
 
 }} // namespace certi/rtia
 
-// $Id: RTIA_network.cc,v 3.39 2010/08/10 16:34:10 erk Exp $
+// $Id: RTIA_network.cc,v 3.40 2010/11/08 15:31:34 erk Exp $



reply via email to

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