certi-cvs
[Top][All Lists]
Advanced

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

[certi-cvs] certi RTIA/DeclarationManagement.cc RTIA/Federa... [br_DEV_H


From: certi-cvs
Subject: [certi-cvs] certi RTIA/DeclarationManagement.cc RTIA/Federa... [br_DEV_HETEROGENEOUS]
Date: Thu, 10 Apr 2008 14:57:51 +0000

CVSROOT:        /sources/certi
Module name:    certi
Branch:         br_DEV_HETEROGENEOUS
Changes by:     Eric NOULARD <erk>      08/04/10 14:57:50

Modified files:
        RTIA           : DeclarationManagement.cc 
                         FederationManagement.cc Files.cc 
                         ObjectManagement.cc RTIA_network.cc 
                         TimeManagement.cc Communications.cc 
                         OwnershipManagement.cc DataDistribution.cc 
        RTIG           : RTIG.cc RTIG_processing.cc Federation.cc 
        libCERTI       : NetworkMessage_RW.cc NetworkMessage.hh 
                         NM_Classes.hh ObjectClassAttribute.cc 
                         ObjectClassBroadcastList.cc NM_Classes.cc 
                         Interaction.cc ObjectClass.cc NetworkMessage.cc 

Log message:
        One big step forward (not [yet] functional)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/DeclarationManagement.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.17.2.1&r2=3.17.2.2
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/FederationManagement.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.50.2.1&r2=3.50.2.2
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/Files.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.8&r2=3.8.4.1
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/ObjectManagement.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.35.2.1&r2=3.35.2.2
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/RTIA_network.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.22.2.1&r2=3.22.2.2
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/TimeManagement.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.29.2.1&r2=3.29.2.2
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/Communications.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.22.2.2&r2=3.22.2.3
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/OwnershipManagement.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.12.2.1&r2=3.12.2.2
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/DataDistribution.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.23.2.1&r2=3.23.2.2
http://cvs.savannah.gnu.org/viewcvs/certi/RTIG/RTIG.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.36.2.3&r2=3.36.2.4
http://cvs.savannah.gnu.org/viewcvs/certi/RTIG/RTIG_processing.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.56.2.2&r2=3.56.2.3
http://cvs.savannah.gnu.org/viewcvs/certi/RTIG/Federation.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.80.2.2&r2=3.80.2.3
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NetworkMessage_RW.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.45.2.5&r2=3.45.2.6
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NetworkMessage.hh?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.30.2.6&r2=3.30.2.7
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NM_Classes.hh?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=1.1.2.7&r2=1.1.2.8
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClassAttribute.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.27&r2=3.27.2.1
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClassBroadcastList.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.18.2.2&r2=3.18.2.3
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NM_Classes.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=1.1.2.7&r2=1.1.2.8
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/Interaction.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.35.2.2&r2=3.35.2.3
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClass.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.41.2.2&r2=3.41.2.3
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NetworkMessage.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.28.2.5&r2=3.28.2.6

Patches:
Index: RTIA/DeclarationManagement.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/DeclarationManagement.cc,v
retrieving revision 3.17.2.1
retrieving revision 3.17.2.2
diff -u -b -r3.17.2.1 -r3.17.2.2
--- RTIA/DeclarationManagement.cc       18 Mar 2008 15:55:57 -0000      3.17.2.1
+++ RTIA/DeclarationManagement.cc       10 Apr 2008 14:57:47 -0000      3.17.2.2
@@ -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: DeclarationManagement.cc,v 3.17.2.1 2008/03/18 15:55:57 erk Exp $
+// $Id: DeclarationManagement.cc,v 3.17.2.2 2008/04/10 14:57:47 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -26,6 +26,7 @@
 #include "InteractionSet.hh"
 #include "ObjectClassSet.hh"
 #include "DeclarationManagement.hh"
+#include "NM_Classes.hh"
 
 #ifdef _WIN32
 #include <windows.h>
@@ -86,8 +87,7 @@
     }
 
     // Partie RTIG
-    NetworkMessage req ;
-    req.type = NetworkMessage::PUBLISH_OBJECT_CLASS ;
+    NM_Publish_Object_Class req ;    
     req.objectClass = theClassHandle ;
     req.handleArraySize = attribArraySize ;
     req.federation = fm->_numero_federation ;
@@ -131,8 +131,8 @@
     }
 
     // Partie RTIG
-    NetworkMessage req ;
-    req.type = NetworkMessage::UNPUBLISH_OBJECT_CLASS ;
+    NM_Unpublish_Object_Class req ;
+   
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.objectClass = theClassHandle ;
@@ -166,8 +166,8 @@
     }
 
     // RTIG (may be non-local) request
-    NetworkMessage req ;
-    req.type = NetworkMessage::PUBLISH_INTERACTION_CLASS ;
+    NM_Publish_Interaction_Class req ;
+    
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.interactionClass = theInteractionHandle ;
@@ -199,8 +199,7 @@
     }
 
     // Partie RTIG
-    NetworkMessage req;
-    req.type = NetworkMessage::UNPUBLISH_INTERACTION_CLASS ;
+    NM_Unpublish_Interaction_Class req;   
     req.interactionClass = theInteractionHandle ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
@@ -221,14 +220,13 @@
                               UShort attribArraySize,
                               TypeException &e)
 {
-    NetworkMessage req;
+    NM_Subscribe_Object_Class req;
 
     G.Out(pdGendoc,"enter 
DeclarationManagement::subscribeObjectClassAttribute");
     // Pas de partie locale pour les abonnements
 
     // Partie RTIG
 
-    req.type = NetworkMessage::SUBSCRIBE_OBJECT_CLASS ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.objectClass = theClassHandle ;
@@ -258,14 +256,13 @@
 unsubscribeObjectClassAttribute(ObjectClassHandle theClassHandle,
                                 TypeException &e)
 {
-    NetworkMessage req;
+    NM_Unsubscribe_Object_Class req;
 
     e = e_NO_EXCEPTION ;
 
     // Pas de Partie Locale pour les abonnements
 
     // Partie RTIG
-    req.type = NetworkMessage::UNSUBSCRIBE_OBJECT_CLASS ;
     req.objectClass = theClassHandle ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
@@ -286,7 +283,7 @@
 subscribeInteractionClass(InteractionClassHandle theClassHandle,
                           TypeException &e)
 {
-    NetworkMessage req;
+    NM_Subscribe_Interaction_Class req;
 
     e = e_NO_EXCEPTION ;
 
@@ -303,8 +300,6 @@
     }
 
     // Partie RTIG
-
-    req.type = NetworkMessage::SUBSCRIBE_INTERACTION_CLASS ;
     req.interactionClass = theClassHandle ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
@@ -324,7 +319,7 @@
 unsubscribeInteractionClass(InteractionClassHandle theClassHandle,
                             TypeException &e)
 {
-    NetworkMessage req;
+    NM_Unsubscribe_Object_Class req;
 
     e = e_NO_EXCEPTION ;
 
@@ -341,8 +336,6 @@
     }
 
     // Partie RTIG
-
-    req.type = NetworkMessage::UNSUBSCRIBE_INTERACTION_CLASS ;
     req.interactionClass = theClassHandle ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
@@ -459,4 +452,4 @@
 
 }} // namespace certi/rtia
 
-// $Id: DeclarationManagement.cc,v 3.17.2.1 2008/03/18 15:55:57 erk Exp $
+// $Id: DeclarationManagement.cc,v 3.17.2.2 2008/04/10 14:57:47 erk Exp $

Index: RTIA/FederationManagement.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/FederationManagement.cc,v
retrieving revision 3.50.2.1
retrieving revision 3.50.2.2
diff -u -b -r3.50.2.1 -r3.50.2.2
--- RTIA/FederationManagement.cc        18 Mar 2008 15:55:57 -0000      3.50.2.1
+++ RTIA/FederationManagement.cc        10 Apr 2008 14:57:48 -0000      3.50.2.2
@@ -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: FederationManagement.cc,v 3.50.2.1 2008/03/18 15:55:57 erk Exp $
+// $Id: FederationManagement.cc,v 3.50.2.2 2008/04/10 14:57:48 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -26,6 +26,7 @@
 
 #include "TimeManagement.hh"
 #include "PrettyDebug.hh"
+#include "NM_Classes.hh"
 
 #ifdef _WIN32
 #include <windows.h>
@@ -114,7 +115,7 @@
                  CouldNotOpenFED,ErrorReadingFED,
                  RTIinternalError)
 {
-    NetworkMessage requete;
+    NM_Create_Federation_Execution requete;
 
     G.Out(pdGendoc,"enter FederationManagement::createFederationExecution");
     D.Out(pdInit, "Creating Federation %s.", theName);
@@ -136,7 +137,6 @@
 
     if (e == e_NO_EXCEPTION)
         {
-        requete.type = NetworkMessage::CREATE_FEDERATION_EXECUTION ;        
         requete.federationName = theName;
         requete.FEDid = _FEDid;        
 
@@ -203,7 +203,7 @@
 destroyFederationExecution(const char *theName,
                            TypeException &e)
 {
-    NetworkMessage requete;
+    NM_Destroy_Federation_Execution requete;
 
     D.Out(pdInit, "Destroy Federation %s.", theName);
     G.Out(pdGendoc,"enter FederationManagement::destroyFederationExecution");
@@ -215,7 +215,6 @@
     //    e = e_FederationExecutionDoesNotExist ;
 
     if (e == e_NO_EXCEPTION) {
-        requete.type = NetworkMessage::DESTROY_FEDERATION_EXECUTION ;
         requete.federation = _numero_federation ;
         requete.federate = federate ;
         requete.federationName = theName;        
@@ -256,7 +255,9 @@
                         const char *Federation,
                         TypeException &e)
 {
-    NetworkMessage requete, requeteFED ;
+    NM_Join_Federation_Execution requete;
+    NM_Get_FED_File requeteFED;
+    
     int i, nb ;
     char *filename ; // Needed for working file name
 
@@ -272,7 +273,6 @@
         e = e_FederateAlreadyExecutionMember ;
 
     if (e == e_NO_EXCEPTION) {
-        requete.type = NetworkMessage::JOIN_FEDERATION_EXECUTION ;
         requete.federationName = Federation;        
         requete.federateName = Federate;
 
@@ -330,7 +330,6 @@
                 throw RTIinternalError("FED file has vanished.") ;
               
             // RTIA says RTIG OK for file transfer
-            requeteFED.type = NetworkMessage::GET_FED_FILE ;
             requeteFED.federateName = Federate;
             requeteFED.FEDid = filename;            
             if ( e == e_NO_EXCEPTION)
@@ -367,7 +366,6 @@
                 int nbw = fputs(file_line,fdd);
                 file_line = NULL ;
                 // RTIA says OK to RTIG
-                requeteFED.type = NetworkMessage::GET_FED_FILE ;
                 requeteFED.federateName =Federate;
                 requeteFED.number = num_line ; 
                 requeteFED.FEDid = filename;
@@ -402,7 +400,7 @@
             for (i=0 ; i<nb ; i++) {
                 reponse.reset(comm->waitMessage(NetworkMessage::MESSAGE_NULL, 
0));
                 assert(tm != NULL);
-                tm->insert(reponse->federate, reponse->date);
+                tm->insert(reponse->federate, reponse->getDate());
             }
 
             _est_membre_federation = true ;
@@ -424,7 +422,7 @@
 FederationManagement::resignFederationExecution(RTI::ResignAction,
                                                 TypeException &e)
 {
-    NetworkMessage msg ;
+    NM_Resign_Federation_Execution msg ;
     TypeException exception = e_NO_EXCEPTION ;
 
     e = e_NO_EXCEPTION ;
@@ -440,7 +438,6 @@
         if (tm->requestRegulateurState())
             tm->setTimeRegulating(false, exception);
 
-        msg.type = NetworkMessage::RESIGN_FEDERATION_EXECUTION ;
         msg.federation = _numero_federation ;
         msg.federate = federate ;
 
@@ -496,8 +493,7 @@
         e = e_FederateNotExecutionMember ;
 
     if (e == e_NO_EXCEPTION) {
-        NetworkMessage req ;
-        req.type = NetworkMessage::REGISTER_FEDERATION_SYNCHRONIZATION_POINT ;
+        NM_Register_Federation_Synchronization_Point req ;        
         req.federation = _numero_federation ;
         req.federate = federate ;
         req.setLabel(label);
@@ -547,8 +543,7 @@
         e = e_FederateNotExecutionMember ;
 
     if (e == e_NO_EXCEPTION) {
-        NetworkMessage req ;
-        req.type = NetworkMessage::REGISTER_FEDERATION_SYNCHRONIZATION_POINT ;
+        NM_Register_Federation_Synchronization_Point req;        
         req.federation = _numero_federation ;
         req.federate = federate ;
         req.setLabel(label);
@@ -604,9 +599,8 @@
         e = e_FederateNotExecutionMember ;
 
     if (e == e_NO_EXCEPTION) {
-        NetworkMessage req ;
+        NM_Synchronization_Point_Achieved req ;
 
-        req.type = NetworkMessage::SYNCHRONIZATION_POINT_ACHIEVED ;
         req.federation = _numero_federation ;
         req.federate = federate ;
         req.setLabel(label);
@@ -719,9 +713,9 @@
 
     assert(label != 0);
 
-    NetworkMessage req ;
-    req.type = NetworkMessage::REQUEST_FEDERATION_SAVE ;
-    req.date = the_time ;
+    NM_Request_Federation_Save req ;
+    
+    req.setDate(the_time);
     req.setLabel(label);
     req.federation = _numero_federation ;
     req.federate = federate ;
@@ -750,8 +744,8 @@
 
     assert(label != 0);
 
-    NetworkMessage req ;
-    req.type = NetworkMessage::REQUEST_FEDERATION_SAVE ;
+    NM_Request_Federation_Save req ;
+    
     req.setLabel(label);
     req.federation = _numero_federation ;
     req.federate = federate ;
@@ -776,9 +770,8 @@
     if (!savingState)
         throw SaveNotInitiated("Federation did not initiate saving.");
 
-    NetworkMessage req ;
+    NM_Federate_Save_Begun req ;
 
-    req.type = NetworkMessage::FEDERATE_SAVE_BEGUN ;
     req.federate = federate ;
     req.federation = _numero_federation ;
 
@@ -799,11 +792,10 @@
     if (!savingState)
         throw SaveNotInitiated("Federation did not initiate saving.");
 
-    NetworkMessage req ;
+    std::auto_ptr<NetworkMessage> req(NM_Factory::create(status ? 
NetworkMessage::FEDERATE_SAVE_COMPLETE : 
NetworkMessage::FEDERATE_SAVE_NOT_COMPLETE));
 
-    req.type= status ? NetworkMessage::FEDERATE_SAVE_COMPLETE : 
NetworkMessage::FEDERATE_SAVE_NOT_COMPLETE ;
-    req.federate = federate ;
-    req.federation = _numero_federation ;
+    req->federate = federate ;
+    req->federation = _numero_federation ;
 
     if (status)
        {    
@@ -814,7 +806,7 @@
        G.Out(pdGendoc,"      federateSaveStatus ====>send Message F_S_N_C to 
RTIG");
        }
 
-    comm->sendMessage(&req);
+    comm->sendMessage(req.get());
 
     G.Out(pdGendoc,"exit  FederationManagement::federateSaveStatus");
 }
@@ -868,8 +860,8 @@
 
     assert(label != NULL);
 
-    NetworkMessage req ;
-    req.type = NetworkMessage::REQUEST_FEDERATION_RESTORE ;
+    NM_Request_Federation_Restore req ;
+    
     req.setLabel(label);
     req.federate = federate ;
     req.federation = _numero_federation ;
@@ -892,15 +884,10 @@
     if (!restoringState)
         throw RestoreNotRequested("Federation did not initiate restoring.");
 
-    NetworkMessage req ;
-    req.federate = federate ;
-    req.federation = _numero_federation ;
-    if (status)
-        req.type = NetworkMessage::FEDERATE_RESTORE_COMPLETE ;
-    else
-        req.type = NetworkMessage::FEDERATE_RESTORE_NOT_COMPLETE ;
-
-    comm->sendMessage(&req);
+    std::auto_ptr<NetworkMessage> req(NM_Factory::create(status ? 
NetworkMessage::FEDERATE_RESTORE_COMPLETE : 
NetworkMessage::FEDERATE_RESTORE_NOT_COMPLETE));
+    req->federate = federate ;
+    req->federation = _numero_federation ;
+    comm->sendMessage(req.get());
 }
 
 // ----------------------------------------------------------------------------
@@ -1003,4 +990,4 @@
 
 }} // namespace certi/rtia
 
-// $Id: FederationManagement.cc,v 3.50.2.1 2008/03/18 15:55:57 erk Exp $
+// $Id: FederationManagement.cc,v 3.50.2.2 2008/04/10 14:57:48 erk Exp $

Index: RTIA/Files.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/Files.cc,v
retrieving revision 3.8
retrieving revision 3.8.4.1
diff -u -b -r3.8 -r3.8.4.1
--- RTIA/Files.cc       30 Apr 2005 16:38:39 -0000      3.8
+++ RTIA/Files.cc       10 Apr 2008 14:57:48 -0000      3.8.4.1
@@ -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: Files.cc,v 3.8 2005/04/30 16:38:39 breholee Exp $
+// $Id: Files.cc,v 3.8.4.1 2008/04/10 14:57:48 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -43,7 +43,7 @@
     else {
         msg_buffer = tsos.front();
         found = true ;
-        time = msg_buffer->date ;
+        time = msg_buffer->getDate();
     }
 }
 
@@ -113,7 +113,7 @@
 
     if (!tsos.empty()) {
         buffer_msg = tsos.front();
-        if (buffer_msg->date <= heure_logique) {
+        if (buffer_msg->getDate() <= heure_logique) {
             // remove from list but keep pointer to execute
             // ExecuterServiceFedere.
             tsos.pop_front();
@@ -124,7 +124,7 @@
                 NetworkMessage *buffer_msg2 ;
                 buffer_msg2 = tsos.front();
 
-                if (buffer_msg2->date <= heure_logique)
+                if (buffer_msg2->getDate() <= heure_logique)
                     msg_restant = true ;
             }
             return buffer_msg ;
@@ -175,7 +175,7 @@
             // stricly greater because we want to place new message behind
             // older ones with same logical time and thus keep receive order
             // in list.
-            if ((*i)->date > msg->date) {
+            if ((*i)->getDate() > msg->getDate()) {
                 tsos.insert(i, msg);
                 return ;
             }
@@ -186,4 +186,4 @@
 
 }} // namespaces
 
-// $Id: Files.cc,v 3.8 2005/04/30 16:38:39 breholee Exp $
+// $Id: Files.cc,v 3.8.4.1 2008/04/10 14:57:48 erk Exp $

Index: RTIA/ObjectManagement.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/ObjectManagement.cc,v
retrieving revision 3.35.2.1
retrieving revision 3.35.2.2
diff -u -b -r3.35.2.1 -r3.35.2.2
--- RTIA/ObjectManagement.cc    18 Mar 2008 15:55:58 -0000      3.35.2.1
+++ RTIA/ObjectManagement.cc    10 Apr 2008 14:57:48 -0000      3.35.2.2
@@ -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.35.2.1 2008/03/18 15:55:58 erk Exp $
+// $Id: ObjectManagement.cc,v 3.35.2.2 2008/04/10 14:57:48 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -29,6 +29,7 @@
 #include "ObjectManagement.hh"
 #include "FederationManagement.hh"
 #include "PrettyDebug.hh"
+#include "NM_Classes.hh"
 
 #ifdef _WIN32
 #include <windows.h>
@@ -67,9 +68,8 @@
                                  FederationTime,
                                  TypeException & e)
 {
-    NetworkMessage req;
+    NM_Register_Object req;
 
-    req.type = NetworkMessage::REGISTER_OBJECT ;
     req.federate = fm->federate ;
     req.federation = fm->_numero_federation ;
     req.objectClass = the_class ;
@@ -110,17 +110,15 @@
                                         const char *theTag,
                                         TypeException &e)
 {
-    NetworkMessage req;
+    NM_Update_Attribute_Values req;
     int i ;
 
     // Building request (req NetworkMessage)
-    req.type = NetworkMessage::UPDATE_ATTRIBUTE_VALUES ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.object = theObjectHandle ;
-    req.date = theTime ;
-    // true for UAV with time
-    req.setBoolean(true);
+    // set Datefor UAV with time
+    req.setDate(theTime);
 
     req.handleArraySize = attribArraySize ;
 
@@ -157,11 +155,10 @@
                                         const char *theTag,
                                         TypeException &e)
 {
-    NetworkMessage req;
+    NM_Update_Attribute_Values req;
     int i ;
 
     // Building request (req NetworkMessage)
-    req.type = NetworkMessage::UPDATE_ATTRIBUTE_VALUES ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.object = theObjectHandle ;
@@ -273,7 +270,7 @@
                                  RegionHandle region,
                                   TypeException &e)
 {
-    NetworkMessage req;
+    NM_Send_Interaction req;
     G.Out(pdGendoc,"ObjectManagement::sendInteraction with time") ;
     // Local test to know if interaction is correct.
     rootObject->Interactions->isReady(fm->federate,
@@ -282,11 +279,9 @@
                                       paramArraySize);
 
     // Building network message (req) to RTIG.
-    req.type = NetworkMessage::SEND_INTERACTION ;
     req.interactionClass = theInteraction ;
     // true for UAV with time
-    req.setBoolean(true);
-    req.date = theTime ;
+    req.setDate(theTime);
     req.region = region ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
@@ -320,7 +315,7 @@
                                  RegionHandle region,
                                   TypeException &e)
 {
-    NetworkMessage req;
+    NM_Send_Interaction req;
     G.Out(pdGendoc,"ObjectManagement::sendInteraction without time");
     // Local test to know if interaction is correct.
     rootObject->Interactions->isReady(fm->federate,
@@ -329,10 +324,9 @@
                                       paramArraySize);
 
     // Building network message (req) to RTIG.
-    req.type = NetworkMessage::SEND_INTERACTION ;
     req.interactionClass = theInteraction ;
     // false for UAV without time
-    req.setBoolean(false);
+    req.isDated    = false;
     req.region = region ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
@@ -406,12 +400,10 @@
                                const char *theTag,
                                TypeException &e)
 {
-    NetworkMessage req;
+    NM_Delete_Object req;
 
-    req.type = NetworkMessage::DELETE_OBJECT ;
     req.object = theObjectHandle ;
-    req.setBoolean(true);
-    req.date = theTime;
+    req.setDate(theTime);
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
 
@@ -435,11 +427,9 @@
                                const char *theTag,
                                TypeException &e)
 {
-    NetworkMessage req;
+    NM_Delete_Object req;
 
-    req.type = NetworkMessage::DELETE_OBJECT ;
     req.object = theObjectHandle ;
-    req.setBoolean(false);
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
 
@@ -506,10 +496,9 @@
                                                TransportType theType,
                                                TypeException &e)
 {
-    NetworkMessage req;
+    NM_Change_Attribute_Transport_Type req;
     int i ;
 
-    req.type = NetworkMessage::CHANGE_ATTRIBUTE_TRANSPORT_TYPE ;
     req.object = theObjectHandle ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
@@ -538,10 +527,9 @@
                                            OrderType theType,
                                            TypeException &e)
 {
-    NetworkMessage req ;
+    NM_Change_Attribute_Order_Type req ;
     int i ;
 
-    req.type = NetworkMessage::CHANGE_ATTRIBUTE_ORDER_TYPE ;
     req.object = theObjectHandle ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
@@ -567,9 +555,8 @@
                                                  TransportType theType,
                                                  TypeException &e)
 {
-    NetworkMessage req;
+    NM_Change_Interaction_Transport_Type req;
 
-    req.type = NetworkMessage::CHANGE_INTERACTION_TRANSPORT_TYPE ;
     req.interactionClass = id ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
@@ -589,9 +576,8 @@
                                              OrderType theType,
                                              TypeException &e)
 {
-    NetworkMessage req;
+    NM_Change_Interaction_Order_Type req;
 
-    req.type = NetworkMessage::CHANGE_INTERACTION_ORDER_TYPE ;
     req.interactionClass = id ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
@@ -614,11 +600,10 @@
                                                     UShort attribArraySize,
                                                     TypeException &e)
 {
-    NetworkMessage req;
+    NM_Request_Object_Attribute_Value_Update req;
 
     G.Out(pdGendoc,"enter 
ObjectManagement::requestObjectAttributeValueUpdate");
 
-    req.type = NetworkMessage::REQUEST_OBJECT_ATTRIBUTE_VALUE_UPDATE ;
     req.object = handle ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
@@ -785,4 +770,4 @@
 
 }} // namespace certi/rtia
 
-// $Id: ObjectManagement.cc,v 3.35.2.1 2008/03/18 15:55:58 erk Exp $
+// $Id: ObjectManagement.cc,v 3.35.2.2 2008/04/10 14:57:48 erk Exp $

Index: RTIA/RTIA_network.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/RTIA_network.cc,v
retrieving revision 3.22.2.1
retrieving revision 3.22.2.2
diff -u -b -r3.22.2.1 -r3.22.2.2
--- RTIA/RTIA_network.cc        18 Mar 2008 15:55:58 -0000      3.22.2.1
+++ RTIA/RTIA_network.cc        10 Apr 2008 14:57:48 -0000      3.22.2.2
@@ -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.22.2.1 2008/03/18 15:55:58 erk Exp $
+// $Id: RTIA_network.cc,v 3.22.2.2 2008/04/10 14:57:48 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -41,7 +41,7 @@
 void
 RTIA::processNetworkMessage(NetworkMessage *msg)
 {
-NetworkMessage::Type msgType = msg->type;
+NetworkMessage::Type msgType = msg->getType();
 
 G.Out(pdGendoc,"enter RTIA::processNetworkMessage");
 
@@ -51,9 +51,9 @@
       {
           D.Out(pdTrace,
                 "Receving Message from RTIG, type 
NetworkMessage::MESSAGE_NULL(%f).",
-                msg->date);
+                msg->getDate());
 
-          tm->update(msg->federate, msg->date);
+          tm->update(msg->federate, msg->getDate());
           delete msg ;
           break ;
       }
@@ -65,7 +65,7 @@
                 "Receving Message from RTIG, type 
NetworkMessage::SET_TIME_REGULATING.");
 
           if (msg->regulator)
-              tm->insert(msg->federate, msg->date);
+              tm->insert(msg->federate, msg->getDate());
           else
               tm->remove(msg->federate);
           delete msg ;
@@ -343,4 +343,4 @@
 
 }} // namespace certi/rtia
 
-// $Id: RTIA_network.cc,v 3.22.2.1 2008/03/18 15:55:58 erk Exp $
+// $Id: RTIA_network.cc,v 3.22.2.2 2008/04/10 14:57:48 erk Exp $

Index: RTIA/TimeManagement.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/TimeManagement.cc,v
retrieving revision 3.29.2.1
retrieving revision 3.29.2.2
diff -u -b -r3.29.2.1 -r3.29.2.2
--- RTIA/TimeManagement.cc      18 Mar 2008 15:55:57 -0000      3.29.2.1
+++ RTIA/TimeManagement.cc      10 Apr 2008 14:57:48 -0000      3.29.2.2
@@ -18,11 +18,12 @@
 // 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.29.2.1 2008/03/18 15:55:57 erk Exp $
+// $Id: TimeManagement.cc,v 3.29.2.2 2008/04/10 14:57:48 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
 #include "TimeManagement.hh"
+#include "NM_Classes.hh"
 #include <float.h>
 
 namespace certi {
@@ -93,16 +94,15 @@
 //! Send a null message to RTIG containing Local Time + Lookahead.
 void TimeManagement::sendNullMessage(FederationTime heure_logique)
 {
-    NetworkMessage msg ;
+    NM_Message_Null msg ;
 
-    msg.date = heure_logique ;
+    msg.setDate(heure_logique);
     heure_logique += _lookahead_courant ;
 
     if (heure_logique > lastNullMessageDate) {
-        msg.type = NetworkMessage::MESSAGE_NULL ;
         msg.federation = fm->_numero_federation ;
         msg.federate = fm->federate ;
-        msg.date = heure_logique ; // ? See 6 lines upper !
+        msg.setDate(heure_logique) ; // ? See 6 lines upper !
 
         comm->sendMessage(&msg);
         lastNullMessageDate = heure_logique ;
@@ -120,12 +120,12 @@
 TimeManagement::executeFederateService(NetworkMessage &msg)
 {
   G.Out(pdGendoc,"enter TimeManagement::executeFederateService");
-  D.Out(pdRequest, "Execute federate service: Type %d.", msg.type);
+  D.Out(pdRequest, "Execute federate service: Type %d.", msg.getType());
 
   _ongoing_tick = false ;  // end of the blocking tick, a message is delivered
   _tick_request_ack = false ;  // the callback message serves as the ack
 
-    switch (msg.type) {
+    switch (msg.getType()) {
 
       case NetworkMessage::FEDERATION_SYNCHRONIZED:
         try {
@@ -163,7 +163,7 @@
             om->discoverObject(msg.object,
                                msg.objectClass,
                                msg.label.c_str(),
-                               msg.date,
+                               msg.getDate(),
                                msg.eventRetraction,
                                msg.exception);
 
@@ -183,7 +183,7 @@
                                         msg.handleArray,
                                         ValueArray,
                                         msg.handleArraySize,
-                                        msg.date,
+                                        msg.getDate(),
                                         msg.label.c_str(),
                                         msg.eventRetraction,
                                         msg.exception);
@@ -217,7 +217,7 @@
                                      msg.handleArray,
                                      ValueArray,
                                      msg.handleArraySize,
-                                     msg.date,
+                                     msg.getDate(),
                                      msg.label.c_str(),
                                      msg.eventRetraction,
                                      msg.exception);
@@ -237,7 +237,7 @@
           if (msg.getBoolean()) {
                om->removeObject(msg.object,
                                 msg.federate,
-                                msg.date,
+                                msg.getDate(),
                                 msg.label.c_str(),
                                 msg.eventRetraction,
                                 msg.exception);
@@ -320,14 +320,14 @@
 
       case NetworkMessage::FEDERATION_SAVED:
       case NetworkMessage::FEDERATION_NOT_SAVED: {
-          bool status = (msg.type == NetworkMessage::FEDERATION_SAVED) ? true 
: false ;
+          bool status = (msg.getType() == NetworkMessage::FEDERATION_SAVED) ? 
true : false ;
           fm->federationSavedStatus(status);
       }
         break ;
 
       case NetworkMessage::REQUEST_FEDERATION_RESTORE_SUCCEEDED:
       case NetworkMessage::REQUEST_FEDERATION_RESTORE_FAILED: {
-          bool status = (msg.type == 
NetworkMessage::REQUEST_FEDERATION_RESTORE_SUCCEEDED)
+          bool status = (msg.getType() == 
NetworkMessage::REQUEST_FEDERATION_RESTORE_SUCCEEDED)
               ? true : false ;
           fm->requestFederationRestoreStatus(status, msg.label.c_str(), 
msg.tag.c_str());
       }
@@ -343,7 +343,7 @@
 
       case NetworkMessage::FEDERATION_RESTORED:
       case NetworkMessage::FEDERATION_NOT_RESTORED: {
-          bool status = (msg.type == NetworkMessage::FEDERATION_RESTORED) ? 
true : false ;
+          bool status = (msg.getType() == NetworkMessage::FEDERATION_RESTORED) 
? true : false ;
           fm->federationRestoredStatus(status);
       }
         break ;
@@ -551,7 +551,7 @@
 void
 TimeManagement::setTimeConstrained(bool etat, TypeException &e)
 {
-    NetworkMessage msg ;
+    NM_Set_Time_Constrained msg ;
 
     e = e_NO_EXCEPTION ;
 
@@ -566,7 +566,6 @@
     if (e == e_NO_EXCEPTION) {
         _est_contraint = etat ;
 
-        msg.type = NetworkMessage::SET_TIME_CONSTRAINED ;
         msg.federation = fm->_numero_federation ;
         msg.federate = fm->federate ;
         msg.constrained = etat ;
@@ -585,7 +584,7 @@
 void
 TimeManagement::setTimeRegulating(bool etat, TypeException &e)
 {
-    NetworkMessage msg ;
+    NM_Set_Time_Regulating msg ;
 
     e = e_NO_EXCEPTION ;
 
@@ -606,11 +605,10 @@
     if (e == e_NO_EXCEPTION) {
         _est_regulateur = etat ;
 
-        msg.type = NetworkMessage::SET_TIME_REGULATING ;
         msg.federation = fm->_numero_federation ;
         msg.federate = fm->federate ;
         msg.regulator = etat ;
-        msg.date = _heure_courante + _lookahead_courant ;
+        msg.setDate(_heure_courante + _lookahead_courant);
 
         comm->sendMessage(&msg);
 
@@ -798,4 +796,4 @@
 
 }} // namespaces
 
-// $Id: TimeManagement.cc,v 3.29.2.1 2008/03/18 15:55:57 erk Exp $
+// $Id: TimeManagement.cc,v 3.29.2.2 2008/04/10 14:57:48 erk Exp $

Index: RTIA/Communications.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/Communications.cc,v
retrieving revision 3.22.2.2
retrieving revision 3.22.2.3
diff -u -b -r3.22.2.2 -r3.22.2.3
--- RTIA/Communications.cc      10 Apr 2008 11:35:57 -0000      3.22.2.2
+++ RTIA/Communications.cc      10 Apr 2008 14:57:48 -0000      3.22.2.3
@@ -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: Communications.cc,v 3.22.2.2 2008/04/10 11:35:57 erk Exp $
+// $Id: Communications.cc,v 3.22.2.3 2008/04/10 14:57:48 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -75,7 +75,7 @@
 
     D.Out(pdProtocol, "TCP Message of Type %d has arrived.", type_msg);
 
-    while ((msg->type != type_msg) ||
+    while ((msg->getType() != type_msg) ||
            ((numeroFedere != 0) && (msg->federate != numeroFedere))) {
         waitingList.push_back(msg);
         msg = NM_Factory::receive((SecureTCPSocket *) this);        
@@ -83,7 +83,7 @@
     }
     
     assert(msg != NULL);
-    assert(msg->type == type_msg);
+    assert(msg->getType() == type_msg);
     return msg;
 } /* end of waitMessage */
 
@@ -290,7 +290,7 @@
 
         D.Out(pdProtocol, "Rechercher message de type %d .", type_msg);
 
-        if ((*i)->type == type_msg) {
+        if ((*i)->getType() == type_msg) {
             // if numeroFedere != 0, verify that federateNumbers are similar
             if (((*i)->federate == numeroFedere) || (numeroFedere == 0)) {
                *msg = *i;                                
@@ -328,4 +328,4 @@
 
 }} // namespace certi/rtia
 
-// $Id: Communications.cc,v 3.22.2.2 2008/04/10 11:35:57 erk Exp $
+// $Id: Communications.cc,v 3.22.2.3 2008/04/10 14:57:48 erk Exp $

Index: RTIA/OwnershipManagement.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/OwnershipManagement.cc,v
retrieving revision 3.12.2.1
retrieving revision 3.12.2.2
diff -u -b -r3.12.2.1 -r3.12.2.2
--- RTIA/OwnershipManagement.cc 18 Mar 2008 15:55:57 -0000      3.12.2.1
+++ RTIA/OwnershipManagement.cc 10 Apr 2008 14:57:48 -0000      3.12.2.2
@@ -18,13 +18,14 @@
 // along with this program ; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 //
-// $Id: OwnershipManagement.cc,v 3.12.2.1 2008/03/18 15:55:57 erk Exp $
+// $Id: OwnershipManagement.cc,v 3.12.2.2 2008/04/10 14:57:48 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
 #include "OwnershipManagement.hh"
 
 #include "PrettyDebug.hh"
+#include "NM_Classes.hh"
 
 #ifdef _WIN32
 #include <windows.h>
@@ -63,13 +64,12 @@
                                               AttributeHandle theAttribute,
                                               TypeException &e)
 {
-    NetworkMessage req ;
+    NM_Is_Attribute_Owned_By_Federate req ;
 
     D.Out(pdDebug,
           "IS_ATTRIBUTE_OWNED_BY_FEDERATE, attribute %u of object %u",
           theAttribute, theObject);
 
-    req.type = NetworkMessage::IS_ATTRIBUTE_OWNED_BY_FEDERATE ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.object = theObject ;
@@ -100,13 +100,12 @@
                                              AttributeHandle theAttribute,
                                              TypeException &e)
 {
-    NetworkMessage req;
+    NM_Query_Attribute_Ownership req;
 
     D.Out(pdDebug,
           "QUERY_ATTRIBUTE_OWNERSHIP, attribute %u from object %u",
           theAttribute, theObject);
 
-    req.type = NetworkMessage::QUERY_ATTRIBUTE_OWNERSHIP ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.object = theObject ;
@@ -134,9 +133,8 @@
                                         TypeException &e)
 
 {
-    NetworkMessage req;
+    NM_Negotiated_Attribute_Ownership_Divestiture req;
 
-    req.type = NetworkMessage::NEGOTIATED_ATTRIBUTE_OWNERSHIP_DIVESTITURE ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.object = theObject ;
@@ -166,9 +164,8 @@
                                               UShort attribArraySize,
                                               TypeException &e)
 {
-    NetworkMessage req;
+    NM_Cancel_Negotiated_Attribute_Ownership_Divestiture req;
 
-    req.type = 
NetworkMessage::CANCEL_NEGOTIATED_ATTRIBUTE_OWNERSHIP_DIVESTITURE ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.object = theObject ;
@@ -198,9 +195,8 @@
                                          UShort attribArraySize,
                                          TypeException &e)
 {
-    NetworkMessage req;
+    NM_Attribute_Ownership_Acquisition_If_Available req;
 
-    req.type = NetworkMessage::ATTRIBUTE_OWNERSHIP_ACQUISITION_IF_AVAILABLE ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.object = theObject ;
@@ -228,9 +224,8 @@
                                            UShort attribArraySize,
                                            TypeException &e)
 {
-    NetworkMessage req;
+    NM_Unconditional_Attribute_Ownership_Divestiture req;
 
-    req.type = NetworkMessage::UNCONDITIONAL_ATTRIBUTE_OWNERSHIP_DIVESTITURE ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.object = theObject ;
@@ -260,9 +255,8 @@
                               const char *theTag,
                               TypeException &e)
 {
-    NetworkMessage req;
+    NM_Attribute_Ownership_Acquisition req;
 
-    req.type = NetworkMessage::ATTRIBUTE_OWNERSHIP_ACQUISITION ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.object = theObject ;
@@ -292,9 +286,8 @@
                                    UShort attribArraySize,
                                    TypeException &e)
 {
-    NetworkMessage req;
+    NM_Attribute_Ownership_Release_Response req;
 
-    req.type = NetworkMessage::ATTRIBUTE_OWNERSHIP_RELEASE_RESPONSE ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.object = theObject ;
@@ -338,9 +331,8 @@
                                     UShort attribArraySize,
                                     TypeException &e)
 {
-    NetworkMessage req;
+    NM_Cancel_Attribute_Ownership_Acquisition req;
 
-    req.type = NetworkMessage::CANCEL_ATTRIBUTE_OWNERSHIP_ACQUISITION ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.object = theObject ;
@@ -512,4 +504,4 @@
 
 }} // namespace certi/rtia
 
-// $Id: OwnershipManagement.cc,v 3.12.2.1 2008/03/18 15:55:57 erk Exp $
+// $Id: OwnershipManagement.cc,v 3.12.2.2 2008/04/10 14:57:48 erk Exp $

Index: RTIA/DataDistribution.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/DataDistribution.cc,v
retrieving revision 3.23.2.1
retrieving revision 3.23.2.2
diff -u -b -r3.23.2.1 -r3.23.2.2
--- RTIA/DataDistribution.cc    18 Mar 2008 15:55:57 -0000      3.23.2.1
+++ RTIA/DataDistribution.cc    10 Apr 2008 14:57:48 -0000      3.23.2.2
@@ -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: DataDistribution.cc,v 3.23.2.1 2008/03/18 15:55:57 erk Exp $
+// $Id: DataDistribution.cc,v 3.23.2.2 2008/04/10 14:57:48 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -33,6 +33,7 @@
 #include "ObjectClassAttribute.hh"
 #include "RoutingSpace.hh"
 #include "FedRegion.hh"
+#include "NM_Classes.hh"
 
 #include <cassert>
 #include <memory>
@@ -123,9 +124,8 @@
     throw (SpaceNotDefined)
 {
     D[pdDebug] << "Start creating region in space " << space << "..." << endl ;
-    NetworkMessage req;    
+    NM_DDM_Create_Region req;    
 
-    req.type = NetworkMessage::DDM_CREATE_REGION ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.space = space ;
@@ -164,9 +164,8 @@
     RTIRegion *region = rootObject->getRegion(handle);
 
     // Request to RTIG
-    NetworkMessage req;
+    NM_DDM_Modify_Region req;
     
-    req.type = NetworkMessage::DDM_MODIFY_REGION ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.region = handle ;
@@ -195,9 +194,8 @@
     rootObject->getRegion(handle);
 
     // Request to RTIG
-    NetworkMessage req;
+    NM_DDM_Delete_Region req;
 
-    req.type = NetworkMessage::DDM_DELETE_REGION ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.region = handle ;
@@ -232,9 +230,8 @@
        rootObject->getObjectAttribute(object, attr[i])->associate(r);  
     }
 
-    NetworkMessage req;
+    NM_DDM_Associate_Region req;
 
-    req.type = NetworkMessage::DDM_ASSOCIATE_REGION ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.object = object ;
@@ -260,9 +257,8 @@
     D[pdDebug] << "Register object of class " << class_handle << " with "
               << regions.size() << " region(s)." << std::endl ;
 
-    NetworkMessage req;    
+    NM_DDM_Register_Object req;    
 
-    req.type = NetworkMessage::DDM_REGISTER_OBJECT ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.objectClass = class_handle ;
@@ -304,9 +300,8 @@
 
     rootObject->getObject(object)->unassociate(r);
 
-    NetworkMessage req;
+    NM_DDM_Unassociate_Region req;
 
-    req.type = NetworkMessage::DDM_UNASSOCIATE_REGION ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.object = object ;
@@ -331,9 +326,8 @@
     D[pdDebug] << "Subscribe attributes with region " << region << endl ;
     rootObject->getRegion(region);
 
-    NetworkMessage req;
+    NM_DDM_Subscribe_Attributes req;
 
-    req.type = NetworkMessage::DDM_SUBSCRIBE_ATTRIBUTES ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.objectClass = obj_class ;
@@ -358,9 +352,8 @@
               << " with region " << region << endl ;
     rootObject->getRegion(region);
 
-    NetworkMessage req;
+    NM_DDM_Unsubscribe_Attributes req;
 
-    req.type = NetworkMessage::DDM_UNSUBSCRIBE_ATTRIBUTES ;
     req.federation = fm->_numero_federation ;
     req.federate = fm->federate ;
     req.objectClass = obj_class ;
@@ -383,9 +376,8 @@
     D[pdDebug] << "Subscribe interaction with region " << region << endl ;
     rootObject->getRegion(region);
 
-    NetworkMessage req;
+    NM_DDM_Subscribe_Interaction req;
 
-    req.type = NetworkMessage::DDM_SUBSCRIBE_INTERACTION ;
     req.interactionClass = int_class ;
     req.region = region ;
 
@@ -406,9 +398,8 @@
     D[pdDebug] << "Unsubscribe interaction with region " << region << endl ;
     rootObject->getRegion(region);
 
-    NetworkMessage req;
+    NM_DDM_Unsubscribe_Interaction req;
 
-    req.type = NetworkMessage::DDM_UNSUBSCRIBE_INTERACTION ;
     req.interactionClass = int_class ;
     req.region = region ;
 
@@ -421,4 +412,4 @@
 
 }} // namespace certi::rtia
 
-// $Id: DataDistribution.cc,v 3.23.2.1 2008/03/18 15:55:57 erk Exp $
+// $Id: DataDistribution.cc,v 3.23.2.2 2008/04/10 14:57:48 erk Exp $

Index: RTIG/RTIG.cc
===================================================================
RCS file: /sources/certi/certi/RTIG/RTIG.cc,v
retrieving revision 3.36.2.3
retrieving revision 3.36.2.4
diff -u -b -r3.36.2.3 -r3.36.2.4
--- RTIG/RTIG.cc        10 Apr 2008 11:35:55 -0000      3.36.2.3
+++ RTIG/RTIG.cc        10 Apr 2008 14:57:49 -0000      3.36.2.4
@@ -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.cc,v 3.36.2.3 2008/04/10 11:35:55 erk Exp $
+// $Id: RTIG.cc,v 3.36.2.4 2008/04/10 14:57:49 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -85,12 +85,12 @@
 Socket*
 RTIG::chooseProcessingMethod(Socket *link, NetworkMessage *msg)
 {
-    G.Out(pdGendoc,"enter RTIG::chooseProcessingMethod type %d",msg->type);
+    G.Out(pdGendoc,"enter RTIG::chooseProcessingMethod type 
%d",msg->getType());
     // This may throw a security error.
-    if ( msg->type != NetworkMessage::DESTROY_FEDERATION_EXECUTION)
+    if ( msg->getType() != NetworkMessage::DESTROY_FEDERATION_EXECUTION)
        socketServer.checkMessage(link->returnSocket(), msg);   
        
-    switch(msg->type) {
+    switch(msg->getType()) {
       case NetworkMessage::MESSAGE_NULL:
         D.Out(pdDebug, "Message Null.");
         auditServer.setLevel(0);
@@ -202,7 +202,7 @@
 
       case NetworkMessage::SET_TIME_REGULATING:
         D.Out(pdTrace, "SetTimeRegulating du federe %u(date=%f).",
-              msg->federate, msg->date);
+              msg->federate, msg->getDate());
         auditServer.setLevel(8);
         processSetTimeRegulating(msg);
         break ;
@@ -369,7 +369,7 @@
        
       default:
         // FIXME: Should treat other cases CHANGE_*_ORDER/TRANSPORT_TYPE
-        D.Out(pdError, "processMessageRecu: unknown type %u.", msg->type);
+        D.Out(pdError, "processMessageRecu: unknown type %u.", msg->getType());
         throw RTIinternalError("Unknown Message Type");
     }
     G.Out(pdGendoc,"exit  RTIG::chooseProcessingMethod");
@@ -506,7 +506,7 @@
 RTIG::processIncomingMessage(Socket *link)
 {
     NetworkMessage* msg ;
-    NetworkMessage rep ; // Server Answer(only if an exception is raised)
+    
 
     char buffer[BUFFER_EXCEPTION_REASON_SIZE] ; // To store the exception 
reason
     G.Out(pdGendoc,"enter RTIG::processIncomingMessage");
@@ -518,11 +518,11 @@
     /* virtual constructor call */
     msg = NM_Factory::receive(link);
     
-    rep.type = msg->type ;
-    rep.exception = e_NO_EXCEPTION ;
-    rep.federate = msg->federate ;
+    // Server Answer(only if an exception is raised)
+    std::auto_ptr<NetworkMessage> rep(NM_Factory::create(msg->getType()));    
+    rep->federate = msg->federate ;
 
-    auditServer.startLine(msg->federation, msg->federate, msg->type);
+    auditServer.startLine(msg->federation, msg->federate, msg->getType());
 
     // This macro is used to copy any non null exception reason
     // string into our buffer(used for Audit purpose).
@@ -537,327 +537,327 @@
     catch (ArrayIndexOutOfBounds &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_ArrayIndexOutOfBounds ;
+        rep->exception = e_ArrayIndexOutOfBounds ;
     }
     catch (AttributeAlreadyOwned &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_AttributeAlreadyOwned ;
+        rep->exception = e_AttributeAlreadyOwned ;
     }
     catch (AttributeAlreadyBeingAcquired &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_AttributeAlreadyBeingAcquired ;
+        rep->exception = e_AttributeAlreadyBeingAcquired ;
     }
     catch (AttributeAlreadyBeingDivested &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_AttributeAlreadyBeingDivested ;
+        rep->exception = e_AttributeAlreadyBeingDivested ;
     }
     catch (AttributeDivestitureWasNotRequested &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_AttributeDivestitureWasNotRequested ;
+        rep->exception = e_AttributeDivestitureWasNotRequested ;
     }
     catch (AttributeAcquisitionWasNotRequested &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_AttributeAcquisitionWasNotRequested ;
+        rep->exception = e_AttributeAcquisitionWasNotRequested ;
     }
     catch (AttributeNotDefined &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_AttributeNotDefined ;
+        rep->exception = e_AttributeNotDefined ;
     }
     catch (AttributeNotKnown &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_AttributeNotKnown ;
+        rep->exception = e_AttributeNotKnown ;
     }
     catch (AttributeNotOwned &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_AttributeNotOwned ;
+        rep->exception = e_AttributeNotOwned ;
     }
     catch (AttributeNotPublished &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_AttributeNotPublished ;
+        rep->exception = e_AttributeNotPublished ;
     }
     catch (AttributeNotSubscribed &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_AttributeNotSubscribed ;
+        rep->exception = e_AttributeNotSubscribed ;
     }
     catch (ConcurrentAccessAttempted &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_ConcurrentAccessAttempted ;
+        rep->exception = e_ConcurrentAccessAttempted ;
     }
     catch (CouldNotDiscover &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_CouldNotDiscover ;
+        rep->exception = e_CouldNotDiscover ;
     }
     catch (CouldNotOpenRID &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_CouldNotOpenRID ;
+        rep->exception = e_CouldNotOpenRID ;
     }
     catch (CouldNotOpenFED &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_CouldNotOpenFED ;
+        rep->exception = e_CouldNotOpenFED ;
     }
     catch (CouldNotRestore &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_CouldNotRestore ;
+        rep->exception = e_CouldNotRestore ;
     }
     catch (DeletePrivilegeNotHeld &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_DeletePrivilegeNotHeld ;
+        rep->exception = e_DeletePrivilegeNotHeld ;
     }
     catch (ErrorReadingRID &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_ErrorReadingRID ;
+        rep->exception = e_ErrorReadingRID ;
     }
     catch (EventNotKnown &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_EventNotKnown ;
+        rep->exception = e_EventNotKnown ;
     }
     catch (FederateAlreadyPaused &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederateAlreadyPaused ;
+        rep->exception = e_FederateAlreadyPaused ;
     }
     catch (FederateAlreadyExecutionMember &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederateAlreadyExecutionMember ;
+        rep->exception = e_FederateAlreadyExecutionMember ;
     }
     catch (FederateDoesNotExist &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederateDoesNotExist ;
+        rep->exception = e_FederateDoesNotExist ;
     }
     catch (FederateInternalError &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederateInternalError ;
+        rep->exception = e_FederateInternalError ;
     }
     catch (FederateNameAlreadyInUse &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederateNameAlreadyInUse ;
+        rep->exception = e_FederateNameAlreadyInUse ;
     }
     catch (FederateNotExecutionMember &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederateNotExecutionMember ;
+        rep->exception = e_FederateNotExecutionMember ;
     }
     catch (FederateNotPaused &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederateNotPaused ;
+        rep->exception = e_FederateNotPaused ;
     }
     catch (FederateNotPublishing &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederateNotPublishing ;
+        rep->exception = e_FederateNotPublishing ;
     }
     catch (FederateNotSubscribing &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederateNotSubscribing ;
+        rep->exception = e_FederateNotSubscribing ;
     }
     catch (FederateOwnsAttributes &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederateOwnsAttributes ;
+        rep->exception = e_FederateOwnsAttributes ;
     }
     catch (FederatesCurrentlyJoined &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederatesCurrentlyJoined ;
+        rep->exception = e_FederatesCurrentlyJoined ;
     }
     catch (FederateWasNotAskedToReleaseAttribute &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederateWasNotAskedToReleaseAttribute ;
+        rep->exception = e_FederateWasNotAskedToReleaseAttribute ;
     }
     catch (FederationAlreadyPaused &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederationAlreadyPaused ;
+        rep->exception = e_FederationAlreadyPaused ;
     }
     catch (FederationExecutionAlreadyExists &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederationExecutionAlreadyExists ;
+        rep->exception = e_FederationExecutionAlreadyExists ;
     }
     catch (FederationExecutionDoesNotExist &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederationExecutionDoesNotExist ;
+        rep->exception = e_FederationExecutionDoesNotExist ;
     }
     catch (FederationNotPaused &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederationNotPaused ;
+        rep->exception = e_FederationNotPaused ;
     }
     catch (FederationTimeAlreadyPassed &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_FederationTimeAlreadyPassed ;
+        rep->exception = e_FederationTimeAlreadyPassed ;
     }
     catch (IDsupplyExhausted &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_IDsupplyExhausted ;
+        rep->exception = e_IDsupplyExhausted ;
     }
     catch (InteractionClassNotDefined &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_InteractionClassNotDefined ;
+        rep->exception = e_InteractionClassNotDefined ;
     }
     catch (InteractionClassNotKnown &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_InteractionClassNotKnown ;
+        rep->exception = e_InteractionClassNotKnown ;
     }
     catch (InteractionClassNotPublished &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_InteractionClassNotPublished ;
+        rep->exception = e_InteractionClassNotPublished ;
     }
     catch (InteractionParameterNotDefined &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_InteractionParameterNotDefined ;
+        rep->exception = e_InteractionParameterNotDefined ;
     }
     catch (InteractionParameterNotKnown &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_InteractionParameterNotKnown ;
+        rep->exception = e_InteractionParameterNotKnown ;
     }
     catch (InvalidDivestitureCondition &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_InvalidDivestitureCondition ;
+        rep->exception = e_InvalidDivestitureCondition ;
     }
     catch (InvalidExtents &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_InvalidExtents ;
+        rep->exception = e_InvalidExtents ;
     }
     catch (InvalidFederationTime &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_InvalidFederationTime ;
+        rep->exception = e_InvalidFederationTime ;
     }
     catch (InvalidFederationTimeDelta &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_InvalidFederationTimeDelta ;
+        rep->exception = e_InvalidFederationTimeDelta ;
     }
     catch (InvalidObjectHandle &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_InvalidObjectHandle ;
+        rep->exception = e_InvalidObjectHandle ;
     }
     catch (InvalidOrderType &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_InvalidOrderType ;
+        rep->exception = e_InvalidOrderType ;
     }
     catch (InvalidResignAction &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_InvalidResignAction ;
+        rep->exception = e_InvalidResignAction ;
     }
     catch (InvalidRetractionHandle &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_InvalidRetractionHandle ;
+        rep->exception = e_InvalidRetractionHandle ;
     }
     catch (InvalidRoutingSpace &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_InvalidRoutingSpace ;
+        rep->exception = e_InvalidRoutingSpace ;
     }
     catch (InvalidTransportType &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_InvalidTransportType ;
+        rep->exception = e_InvalidTransportType ;
     }
     catch (MemoryExhausted &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_MemoryExhausted ;
+        rep->exception = e_MemoryExhausted ;
     }
     catch (NameNotFound &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_NameNotFound ;
+        rep->exception = e_NameNotFound ;
     }
     catch (NoPauseRequested &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_NoPauseRequested ;
+        rep->exception = e_NoPauseRequested ;
     }
     catch (NoResumeRequested &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_NoResumeRequested ;
+        rep->exception = e_NoResumeRequested ;
     }
     catch (ObjectClassNotDefined &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_ObjectClassNotDefined ;
+        rep->exception = e_ObjectClassNotDefined ;
     }
     catch (ObjectClassNotKnown &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_ObjectClassNotKnown ;
+        rep->exception = e_ObjectClassNotKnown ;
     }
     catch (ObjectClassNotPublished &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_ObjectClassNotPublished ;
+        rep->exception = e_ObjectClassNotPublished ;
     }
     catch (ObjectClassNotSubscribed &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_ObjectClassNotSubscribed ;
+        rep->exception = e_ObjectClassNotSubscribed ;
     }
     catch (ObjectNotKnown &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_ObjectNotKnown ;
+        rep->exception = e_ObjectNotKnown ;
     }
     catch (ObjectAlreadyRegistered &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_ObjectAlreadyRegistered ;
+        rep->exception = e_ObjectAlreadyRegistered ;
     }
     catch (RegionNotKnown &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_RegionNotKnown ;
+        rep->exception = e_RegionNotKnown ;
     }
     catch (RestoreInProgress &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_RestoreInProgress ;
+        rep->exception = e_RestoreInProgress ;
     }
     catch (RestoreNotRequested &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_RestoreNotRequested ;
+        rep->exception = e_RestoreNotRequested ;
     }
     catch (RTIinternalError &e) {
         if (e._reason == NULL)
@@ -865,78 +865,78 @@
         else
             D.Out(pdExcept, "Catching \"%s\" exception: %s.", e._name, 
e._reason);
         CPY_NOT_NULL(e);
-        rep.exception = e_RTIinternalError ;
+        rep->exception = e_RTIinternalError ;
     }
     catch (SaveInProgress &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_SaveInProgress ;
+        rep->exception = e_SaveInProgress ;
     }
     catch (SaveNotInitiated &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_SaveNotInitiated ;
+        rep->exception = e_SaveNotInitiated ;
     }
     catch (SecurityError &e) {
         cout << endl << "Security Error : " << e._reason << endl ;
         CPY_NOT_NULL(e);
-        rep.exception = e_SecurityError ;
+        rep->exception = e_SecurityError ;
     }
     catch (SpaceNotDefined &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_SpaceNotDefined ;
+        rep->exception = e_SpaceNotDefined ;
     }
     catch (SpecifiedSaveLabelDoesNotExist &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_SpecifiedSaveLabelDoesNotExist ;
+        rep->exception = e_SpecifiedSaveLabelDoesNotExist ;
     }
     catch (TimeAdvanceAlreadyInProgress &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_TimeAdvanceAlreadyInProgress ;
+        rep->exception = e_TimeAdvanceAlreadyInProgress ;
     }
     catch (TimeAdvanceWasNotInProgress &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_TimeAdvanceWasNotInProgress ;
+        rep->exception = e_TimeAdvanceWasNotInProgress ;
     }
     catch (TooManyIDsRequested &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_TooManyIDsRequested ;
+        rep->exception = e_TooManyIDsRequested ;
     }
     catch (UnableToPerformSave &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_UnableToPerformSave ;
+        rep->exception = e_UnableToPerformSave ;
     }
     catch (UnimplementedService &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_UnimplementedService ;
+        rep->exception = e_UnimplementedService ;
     }
     catch (UnknownLabel &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_UnknownLabel ;
+        rep->exception = e_UnknownLabel ;
     }
     catch (ValueCountExceeded &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_ValueCountExceeded ;
+        rep->exception = e_ValueCountExceeded ;
     }
     catch (ValueLengthExceeded &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_ValueLengthExceeded ;
+        rep->exception = e_ValueLengthExceeded ;
     }
 
     // Non RTI specific exception, Client connection problem(internal)
     catch (NetworkError &e) {
         strcpy(buffer, " - NetworkError");
-        auditServer.endLine(rep.exception, buffer);
+        auditServer.endLine(rep->exception, buffer);
 
         throw e ;
     }
@@ -945,28 +945,28 @@
     catch (Exception &e) {
         D.Out(pdExcept, "Unknown Exception : %s.", e._name);
         CPY_NOT_NULL(e);
-        rep.exception = e_RTIinternalError ;
+        rep->exception = e_RTIinternalError ;
     }
 
     // buffer may contain an exception reason. If not, set it to OK
     // or Exception
     if (strlen(buffer)== 0) {
-        if (rep.exception == e_NO_EXCEPTION)
+        if (rep->exception == e_NO_EXCEPTION)
             strcpy(buffer, " - OK");
         else
             strcpy(buffer, " - Exception");
     }
 
-    auditServer.endLine(rep.exception, buffer);
+    auditServer.endLine(rep->exception, buffer);
 
     if (link == NULL) return link ;
 
     /* FIXME ***/
-    if (rep.exception != e_NO_EXCEPTION) {
-        rep.send(link);
+    if (rep->exception != e_NO_EXCEPTION) {
+        rep->send(link);
         D.Out(pdExcept,
               "RTIG catched exception %d and sent it back to federate %d.",
-              rep.exception, rep.federate);
+              rep->exception, rep->federate);
     }
     G.Out(pdGendoc,"exit  RTIG::processIncomingMessage");
     return link ;
@@ -987,4 +987,4 @@
 
 }} // namespace certi/rtig
 
-// $Id: RTIG.cc,v 3.36.2.3 2008/04/10 11:35:55 erk Exp $
+// $Id: RTIG.cc,v 3.36.2.4 2008/04/10 14:57:49 erk Exp $

Index: RTIG/RTIG_processing.cc
===================================================================
RCS file: /sources/certi/certi/RTIG/RTIG_processing.cc,v
retrieving revision 3.56.2.2
retrieving revision 3.56.2.3
diff -u -b -r3.56.2.2 -r3.56.2.3
--- RTIG/RTIG_processing.cc     10 Apr 2008 11:35:56 -0000      3.56.2.2
+++ RTIG/RTIG_processing.cc     10 Apr 2008 14:57:49 -0000      3.56.2.3
@@ -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.56.2.2 2008/04/10 11:35:56 erk Exp $
+// $Id: RTIG_processing.cc,v 3.56.2.3 2008/04/10 14:57:49 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -204,7 +204,7 @@
     repFED.exception = e ;
     // Send answer
     D.Out(pdTrace,"send NetworkMessage of Type %d after open \"%s\"",
-          repFED.type,repFED.FEDid.c_str());
+          repFED.getType(),repFED.FEDid.c_str());
     G.Out(pdGendoc,"processJoinFederation====>Begin FED file transfer");
 
     repFED.send(link);
@@ -213,7 +213,7 @@
         {
         // Wait for OK from RTIA
        NM_Get_FED_File msg ;        
-        D.Out(pdTrace,"wait NetworkMessage of Type %d",msg.type);
+        D.Out(pdTrace,"wait NetworkMessage of Type %d",msg.getType());
         msg.receive(link);
         assert ( msg.number == 0 );
         // RTIA has opened working file then RTIG has to transfer file contents
@@ -332,11 +332,11 @@
 RTIG::processSetTimeRegulating(NetworkMessage *msg)
 {
     if (msg->regulator) {
-        auditServer << "ON at time " << msg->date ;
+        auditServer << "ON at time " << msg->getDate();
 
         federations.createRegulator(msg->federation,
                                      msg->federate,
-                                     msg->date);
+                                     msg->getDate());
         D.Out(pdTerm, "Federate %u of Federation %u sets TimeRegulation ON.",
               msg->federate, msg->federation);
     }
@@ -356,7 +356,7 @@
 RTIG::processSetTimeConstrained(NetworkMessage *msg)
 {
     if (msg->constrained) {
-        auditServer << "ON at time " << msg->date ;
+        auditServer << "ON at time " << msg->getDate();
 
         federations.addConstrained(msg->federation,
                                     msg->federate);
@@ -378,13 +378,13 @@
 void
 RTIG::processMessageNull(NetworkMessage *msg)
 {
-    auditServer << "Date " << msg->date ;
+    auditServer << "Date " << msg->getDate() ;
 
     // Catch all exceptions because RTIA does not expect an answer anyway.
     try {
         federations.updateRegulator(msg->federation,
                                      msg->federate,
-                                     msg->date);
+                                     msg->getDate());
     } catch (Exception &e) {}
 }
 
@@ -473,7 +473,7 @@
     if ( req->boolean )
         // With time
         federations.requestFederationSave(req->federation, req->federate,
-                                          req->label.c_str(), req->date);
+                                          req->label.c_str(), req->getDate());
     else
         // Without time
         federations.requestFederationSave(req->federation, req->federate,
@@ -503,14 +503,14 @@
 RTIG::processFederateSaveStatus(Socket *, NetworkMessage *req)
 {
     G.Out(pdGendoc,"enter RTIG::processFederateSaveStatus");
-    if (req->type == NetworkMessage::FEDERATE_SAVE_COMPLETE)
+    if (req->getType() == NetworkMessage::FEDERATE_SAVE_COMPLETE)
         G.Out(pdGendoc,"BEGIN ** FEDERATE SAVE COMPLETE SERVICE **");
     else
         G.Out(pdGendoc,"BEGIN ** FEDERATE SAVE NOT COMPLETE SERVICE **");
 
     auditServer << "Federate " << req->federate << " save ended." ;
 
-    bool status = req->type == NetworkMessage::FEDERATE_SAVE_COMPLETE ;
+    bool status = req->getType() == NetworkMessage::FEDERATE_SAVE_COMPLETE ;
     federations.federateSaveStatus(req->federation, req->federate, status);
 
     G.Out(pdGendoc,"exit  END   ** FEDERATE SAVE (NOT) COMPLETE SERVICE **");
@@ -539,7 +539,7 @@
     G.Out(pdGendoc,"enter RTIG::processRequestFederateRestoreStatus");
     auditServer << "Federate " << req->federate << " restore ended." ;
 
-    bool status = req->type == NetworkMessage::FEDERATE_RESTORE_COMPLETE ;
+    bool status = req->getType() == NetworkMessage::FEDERATE_RESTORE_COMPLETE ;
 
     federations.federateRestoreStatus(req->federation, req->federate, status);
 
@@ -552,7 +552,7 @@
 void
 RTIG::processPublishObjectClass(Socket *link, NetworkMessage *req)
 {
-    bool pub = (req->type == NetworkMessage::PUBLISH_OBJECT_CLASS);
+    bool pub = (req->getType() == NetworkMessage::PUBLISH_OBJECT_CLASS);
 
     auditServer << "Class = " << req->objectClass << ", # of att. = " 
                << req->handleArraySize ;
@@ -567,7 +567,7 @@
     D.Out(pdRegister, "Federate %u of Federation %u published object class 
%d.",
           req->federate, req->federation, req->objectClass);
 
-    std::auto_ptr<NetworkMessage> rep(NM_Factory::create(req->type));    
+    std::auto_ptr<NetworkMessage> rep(NM_Factory::create(req->getType()));    
     rep->federate = req->federate ;
     rep->objectClass = req->objectClass ;
     rep->handleArraySize = 0 ;
@@ -583,7 +583,7 @@
     G.Out(pdGendoc,"enter RTIG::processSubscribeObjectClass");
     G.Out(pdGendoc,"BEGIN **  SUBSCRIBE OBJECT CLASS SERVICE **");
 
-    bool sub = (req->type == NetworkMessage::SUBSCRIBE_OBJECT_CLASS);
+    bool sub = (req->getType() == NetworkMessage::SUBSCRIBE_OBJECT_CLASS);
 
     auditServer << "Class = " << req->objectClass
                << ", # of att. = " << req->handleArraySize ;
@@ -598,7 +598,7 @@
           "Federate %u of Federation %u subscribed to object class %d.",
           req->federate, req->federation, req->objectClass);
 
-    std::auto_ptr<NetworkMessage> rep(NM_Factory::create(req->type));
+    std::auto_ptr<NetworkMessage> rep(NM_Factory::create(req->getType()));
     rep->federate = req->federate ;
     rep->objectClass = req->objectClass ;
     rep->handleArraySize = 0 ;
@@ -616,7 +616,7 @@
 {
     assert(link != NULL && req != NULL);
 
-    bool pub = (req->type == NetworkMessage::PUBLISH_INTERACTION_CLASS);
+    bool pub = (req->getType() == NetworkMessage::PUBLISH_INTERACTION_CLASS);
 
     auditServer << "Class = " << req->interactionClass ;
     federations.publishInteraction(req->federation,
@@ -628,7 +628,7 @@
           req->federation,
           req->interactionClass);
 
-    std::auto_ptr<NetworkMessage> rep(NM_Factory::create(req->type)); ;   
+    std::auto_ptr<NetworkMessage> rep(NM_Factory::create(req->getType())); ;   
     rep->federate = req->federate ;
     rep->interactionClass = req->interactionClass ;
 
@@ -640,7 +640,7 @@
 void
 RTIG::processSubscribeInteractionClass(Socket *link, NetworkMessage *req)
 {
-    bool sub = (req->type == NetworkMessage::SUBSCRIBE_INTERACTION_CLASS);
+    bool sub = (req->getType() == NetworkMessage::SUBSCRIBE_INTERACTION_CLASS);
 
     auditServer << "Class = %u" << req->interactionClass ;
     federations.subscribeInteraction(req->federation,
@@ -653,7 +653,7 @@
           req->federation,
           req->interactionClass);
 
-    std::auto_ptr<NetworkMessage> rep(NM_Factory::create(req->type));;    
+    std::auto_ptr<NetworkMessage> rep(NM_Factory::create(req->getType()));;    
     rep->federate = req->federate ;
     rep->interactionClass = req->interactionClass ;
 
@@ -665,7 +665,7 @@
 void
 RTIG::processRegisterObject(Socket *link, NetworkMessage *req)
 {
-       std::auto_ptr<NetworkMessage> rep(NM_Factory::create(req->type));;
+       std::auto_ptr<NetworkMessage> rep(NM_Factory::create(req->getType()));;
 
     auditServer << "Class = %u" << req->objectClass ;
     rep->object = federations.registerObject(req->federation,
@@ -693,7 +693,7 @@
     ValueLengthPair *ValueArray = NULL ;
 
     auditServer << "ObjID = " << req->object
-               << ", Date = " << req->date ;
+               << ", Date = " << req->getDate() ;
 
     // Get Value Array
     ValueArray = req->getAttribValueArray();
@@ -708,7 +708,7 @@
                                  req->handleArray,
                                  ValueArray,
                                  req->handleArraySize,
-                                 req->date,
+                                 req->getDate(),
                                  req->label.c_str());
         }
     else
@@ -728,7 +728,7 @@
     NM_Update_Attribute_Values rep ;
     rep.federate = req->federate ;
     rep.object = req->object ;
-    rep.date = req->date ;
+    rep.setDate(req->getDate());
     rep.handleArraySize = 0 ;
     // Don't forget label and tag
     rep.label=req->label ;
@@ -749,7 +749,7 @@
 
     // Building Value Array
     auditServer << "IntID = " << req->interactionClass
-               << ", date = " << req->date ;
+               << ", date = " << req->getDate() ;
     values = req->getParamValueArray();
 
     if ( req->getBoolean() )
@@ -760,7 +760,7 @@
                                req->handleArray,
                                values,
                                req->handleArraySize,
-                               req->date,
+                               req->getDate(),
                                req->region,
                                req->label.c_str());
         }
@@ -808,7 +808,7 @@
        federations.destroyObject(req->federation,
                                  req->federate,
                                   req->object,
-                                 req->date,
+                                 req->getDate(),
                                   const_cast<char*>(req->label.c_str()));
     }
     else {
@@ -1255,7 +1255,7 @@
 void
 RTIG::processRegisterObjectWithRegion(Socket *link, NetworkMessage *req)
 {
-       std::auto_ptr<NetworkMessage> rep(NM_Factory::create(req->type));
+       std::auto_ptr<NetworkMessage> rep(NM_Factory::create(req->getType()));
     // FIXME bug #9869
     // When we were passed a set of region
     // we should register object for each region  
@@ -1318,8 +1318,6 @@
         answer.exceptionReason = e._reason ;
         }
 
-    answer.type = NetworkMessage::REQUEST_OBJECT_ATTRIBUTE_VALUE_UPDATE;
-    answer.type = request->type ;
     answer.federate = request->federate ;
     answer.object = request->object ;
 
@@ -1330,4 +1328,4 @@
 
 }} // namespace certi/rtig
 
-// $Id: RTIG_processing.cc,v 3.56.2.2 2008/04/10 11:35:56 erk Exp $
+// $Id: RTIG_processing.cc,v 3.56.2.3 2008/04/10 14:57:49 erk Exp $

Index: RTIG/Federation.cc
===================================================================
RCS file: /sources/certi/certi/RTIG/Federation.cc,v
retrieving revision 3.80.2.2
retrieving revision 3.80.2.3
diff -u -b -r3.80.2.2 -r3.80.2.3
--- RTIG/Federation.cc  10 Apr 2008 11:35:56 -0000      3.80.2.2
+++ RTIG/Federation.cc  10 Apr 2008 14:57:49 -0000      3.80.2.3
@@ -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.80.2.2 2008/04/10 11:35:56 erk Exp $
+// $Id: Federation.cc,v 3.80.2.3 2008/04/10 14:57:49 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -449,10 +449,10 @@
         for (unsigned int i = 0 ; i < v.size(); ++i) {         
             nullMessage.federation = handle ;
                nullMessage.federate = v[i].first ;
-               nullMessage.date = v[i].second ;
+               nullMessage.setDate(v[i].second);
             D.Out(pdTerm,
                  "Sending NULL message(type %d) from %d to new federate.",
-                  nullMessage.type, nullMessage.federate);
+                  nullMessage.getType(), nullMessage.federate);
 
             nullMessage.send(tcp_link);
         }
@@ -468,7 +468,7 @@
                 ASPMessage.setLabel((*i).first);
                 ASPMessage.setTag((*i).second);
                 D.Out(pdTerm, "Sending synchronization message %s (type %d)"
-                      " to the new Federate.", (*i).first, ASPMessage.type);
+                      " to the new Federate.", (*i).first, 
ASPMessage.getType());
 
                 ASPMessage.send(tcp_link);
                 federates.back().addSynchronizationLabel((*i).first);
@@ -528,13 +528,12 @@
     D.Out(pdTerm, "Federation %d: Federate %d is now a regulator(Time=%f).",
           handle, federate_handle, time);
 
-    NetworkMessage msg ;
-    msg.type = NetworkMessage::SET_TIME_REGULATING ;
+    NM_Set_Time_Regulating msg ;
     msg.exception = e_NO_EXCEPTION ;
     msg.federation = handle ;
     msg.federate = federate_handle ;
     msg.regulator = true ;
-    msg.date = time ;
+    msg.setDate(time);
 
     this->broadcastAnyMessage(&msg, 0);
 }
@@ -898,8 +897,7 @@
         throw RTIinternalError("Bad pause label(null or too long).");
 
     // broadcast announceSynchronizationPoint() to all federates in federation.
-    NetworkMessage msg ;
-    msg.type = NetworkMessage::ANNOUNCE_SYNCHRONIZATION_POINT ;
+    NM_Announce_Synchronization_Point msg ;    
     msg.federate = federate ;
     msg.federation = handle ;
     msg.setLabel(label);
@@ -934,8 +932,7 @@
         throw RTIinternalError("Bad pause label(null or too long).");
 
     // broadcast announceSynchronizationPoint() to all federates in federation.
-    NetworkMessage msg ;
-    msg.type = NetworkMessage::ANNOUNCE_SYNCHRONIZATION_POINT ;
+    NM_Announce_Synchronization_Point msg ;    
     msg.federate = federate ;
     msg.federation = handle ;
     msg.setLabel(label);
@@ -976,14 +973,12 @@
     saveInProgress = true ;
     saveLabel = the_label ;
 
-    NetworkMessage msg ;
-    msg.type = NetworkMessage::INITIATE_FEDERATE_SAVE ;
+    NM_Initiate_Federate_Save msg ;    
     msg.federate = the_federate ;
     msg.federation = handle ;
     msg.setLabel(the_label);
-    // boolean true means with time and needs time
-    msg.setBoolean(true);
-    msg.date = time;
+    // timed message
+    msg.setDate(time);
 
     G.Out(pdGendoc,"      requestFederationSave====>broadcast I_F_S to all");
 
@@ -1017,13 +1012,10 @@
     saveInProgress = true ;
     saveLabel = the_label ;
 
-    NetworkMessage msg ;
-    msg.type = NetworkMessage::INITIATE_FEDERATE_SAVE ;
+    NM_Initiate_Federate_Save msg ;    
     msg.federate = the_federate ;
     msg.federation = handle ;
     msg.setLabel(the_label);
-    // boolean false means without time
-    msg.setBoolean(false);
 
     G.Out(pdGendoc,"                  requestFederationSave====>broadcast 
I_F_S"
                    " to all");
@@ -1075,14 +1067,12 @@
     }
 
     // Send end save message.
-    NetworkMessage msg ;
+    std::auto_ptr<NetworkMessage> msg(NM_Factory::create(saveStatus ? 
NetworkMessage::FEDERATION_SAVED : NetworkMessage::FEDERATION_NOT_SAVED )) ;
 
-    msg.type = saveStatus ? NetworkMessage::FEDERATION_SAVED : 
NetworkMessage::FEDERATION_NOT_SAVED ;
-
-    msg.federate = the_federate ;
-    msg.federation = handle ;
+    msg->federate = the_federate ;
+    msg->federation = handle ;
 
-    broadcastAnyMessage(&msg, 0);
+    broadcastAnyMessage(msg.get(), 0);
 
     G.Out(pdGendoc,"            =======> broadcast F_S or F_N_S");
 
@@ -1219,17 +1209,12 @@
     }
 
     // Send end restore message.
-    NetworkMessage msg ;
-
-    if (restoreStatus)
-        msg.type = NetworkMessage::FEDERATION_RESTORED ;
-    else
-        msg.type = NetworkMessage::FEDERATION_NOT_RESTORED ;
+    std::auto_ptr<NetworkMessage> msg(NM_Factory::create(restoreStatus ? 
NetworkMessage::FEDERATION_RESTORED : NetworkMessage::FEDERATION_NOT_RESTORED)) 
;
 
-    msg.federate = the_federate ;
-    msg.federation = handle ;
+    msg->federate = the_federate ;
+    msg->federation = handle ;
 
-    broadcastAnyMessage(&msg, 0);
+    broadcastAnyMessage(msg.get(), 0);
 
     // Reinitialize state.
     restoreStatus = true ;
@@ -1494,13 +1479,10 @@
     D.Out(pdTerm, "Federation %d: Federate %d is not a regulator anymore.",
           handle, federate_handle);
 
-    NetworkMessage msg ;
-    msg.type = NetworkMessage::SET_TIME_REGULATING ;
-    msg.exception = e_NO_EXCEPTION ;
+    NM_Set_Time_Regulating msg ;    
     msg.federation = handle ;
     msg.federate = federate_handle ;
     msg.regulator = false ;
-    msg.date = 0 ;
 
     broadcastAnyMessage(&msg, 0);
 }
@@ -1551,9 +1533,7 @@
     }
 
     // send a federationSynchronized().
-    NetworkMessage msg ;
-    msg.type = NetworkMessage::FEDERATION_SYNCHRONIZED ;
-    msg.exception = e_NO_EXCEPTION ;
+    NM_Federation_Synchronized msg ;    
     msg.federation = handle ;
     msg.federate = federate_handle ;
     msg.setLabel(label);
@@ -1699,12 +1679,10 @@
 
     regulators.update(federate_handle, time);
 
-    NetworkMessage msg ;
-    msg.type = NetworkMessage::MESSAGE_NULL ;
-    msg.exception = e_NO_EXCEPTION ;
+    NM_Message_Null msg ;   
     msg.federation = handle ;
     msg.federate = federate_handle ;
-    msg.date = time ;
+    msg.setDate(time);
 
     broadcastAnyMessage(&msg, federate_handle);
 }
@@ -2303,5 +2281,5 @@
 
 }} // namespace certi/rtig
 
-// $Id: Federation.cc,v 3.80.2.2 2008/04/10 11:35:56 erk Exp $
+// $Id: Federation.cc,v 3.80.2.3 2008/04/10 14:57:49 erk Exp $
 

Index: libCERTI/NetworkMessage_RW.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/NetworkMessage_RW.cc,v
retrieving revision 3.45.2.5
retrieving revision 3.45.2.6
diff -u -b -r3.45.2.5 -r3.45.2.6
--- libCERTI/NetworkMessage_RW.cc       10 Apr 2008 11:35:56 -0000      3.45.2.5
+++ libCERTI/NetworkMessage_RW.cc       10 Apr 2008 14:57:49 -0000      3.45.2.6
@@ -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.45.2.5 2008/04/10 11:35:56 erk Exp $
+// $Id: NetworkMessage_RW.cc,v 3.45.2.6 2008/04/10 14:57:49 erk Exp $
 // ----------------------------------------------------------------------------
 
 
@@ -38,6 +38,10 @@
        /* We serialize the common Network messages part 
         * ALL Network Message will contain the following
         */     
+       if ((type==NOT_USED) ||
+          (type==LAST)) {
+               throw RTIinternalError("Invalid network type (not a valid 
type);");
+       }
        D.Out(pdDebug, "serialize <%s>", getName().c_str());
        /* type of message */
        msgBuf.write_int32(type);
@@ -46,9 +50,11 @@
        msgBuf.write_int32(federation);
        /*
         * "builtin" Optional part
-        * The subclass may chose in the constructor
-        * the variable part.
+        * The subclass may chose in the constructor the variable part.
+        * isDated may be chosen on Message instance basis
+        * (same message may Dated or Not Dated) 
         */
+       msgBuf.write_bool(isDated);
        if (isDated) {
                msgBuf.write_double(date);
        }
@@ -74,9 +80,11 @@
        federation  = msgBuf.read_int32();
        /*
         * "builtin" Optional part
-        * The subclass may chose in the constructor
-        * the variable part.
+        * The subclass may chose in the constructor the variable part.
+        * isDated may be chosen on Message instance basis
+        * (same message may Dated or Not Dated) 
         */
+       isDated = msgBuf.read_bool();
        if (isDated) {
                date = msgBuf.read_double();
        }
@@ -136,4 +144,4 @@
 
 } // namespace certi
 
-// $Id: NetworkMessage_RW.cc,v 3.45.2.5 2008/04/10 11:35:56 erk Exp $
+// $Id: NetworkMessage_RW.cc,v 3.45.2.6 2008/04/10 14:57:49 erk Exp $

Index: libCERTI/NetworkMessage.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/NetworkMessage.hh,v
retrieving revision 3.30.2.6
retrieving revision 3.30.2.7
diff -u -b -r3.30.2.6 -r3.30.2.7
--- libCERTI/NetworkMessage.hh  10 Apr 2008 11:35:56 -0000      3.30.2.6
+++ libCERTI/NetworkMessage.hh  10 Apr 2008 14:57:49 -0000      3.30.2.7
@@ -17,7 +17,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: NetworkMessage.hh,v 3.30.2.6 2008/04/10 11:35:56 erk Exp $
+// $Id: NetworkMessage.hh,v 3.30.2.7 2008/04/10 14:57:49 erk Exp $
 // ----------------------------------------------------------------------------
 
 #ifndef CERTI_NETWORK_MESSAGE_HH
@@ -219,10 +219,10 @@
         */
        bool isDated;
        /** 
-        * The date of message if it is dated.
+        * If ones set Date then this is a Dated message
+        * Message builder which setDate will generate a Dated message 
         */
-       FederationTime date ;
-       void setDate(FederationTime date) {this->date = date;};
+       void setDate(FederationTime date) {isDated=true; this->date = date;};
        const FederationTime getDate() const {return this->date;};
 
        int numberOfRegulators ;
@@ -233,8 +233,8 @@
      */
        bool isLabelled;        
        std::string label;
-       void setLabel(const std::string label) {this->label = label;};
-       void setLabel(const char *new_label) { label = std::string(new_label); }
+       void setLabel(const std::string label) {isLabelled = true; this->label 
= label;};
+       void setLabel(const char *new_label) {isLabelled = true; label = 
std::string(new_label); }
        const std::string getLabel() const {return this->label;};
        
        /**
@@ -242,8 +242,8 @@
         */
        bool isTagged;
        std::string tag;
-       void setTag(const std::string tag) {this->tag = tag;};
-       void setTag(const char *new_tag) { tag = std::string(new_tag); }
+       void setTag(const std::string tag) {isTagged = true; this->tag = tag;};
+       void setTag(const char *new_tag) {isTagged = true; tag = 
std::string(new_tag); }
        const std::string getTag() const {return this->tag;};
        
        ObjectHandlecount idCount ;
@@ -263,9 +263,6 @@
        /** The name corresponding to message type */
        const std::string getName() const {return name;}
        
-       /** The network message type */
-       Message_T type;
-       
        /** 
         * The exception type 
         * if the message is carrying an exception
@@ -297,6 +294,22 @@
         * network message constructor
         */
        std::string name;       
+       
+       /** 
+        * The network message type
+        * type field cannot be accessed directly 
+        *   - only NM constructor may set it.
+        *   - getter should be used to get it. 
+        */
+       Message_T type;
+       
+       /** 
+        * The date of message if it is dated.
+        * date field cannot be accessed directly but only using
+        * getter/setter.
+        */
+       FederationTime date ;
+       
        // ValueArray is now a ValueLengthPair
        ValueLengthPair ValueArray[MAX_ATTRIBUTES_PER_CLASS] ;
        
@@ -311,4 +324,4 @@
 
 #endif // CERTI_NETWORK_MESSAGE_HH
 
-// $Id: NetworkMessage.hh,v 3.30.2.6 2008/04/10 11:35:56 erk Exp $
+// $Id: NetworkMessage.hh,v 3.30.2.7 2008/04/10 14:57:49 erk Exp $

Index: libCERTI/NM_Classes.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/Attic/NM_Classes.hh,v
retrieving revision 1.1.2.7
retrieving revision 1.1.2.8
diff -u -b -r1.1.2.7 -r1.1.2.8
--- libCERTI/NM_Classes.hh      10 Apr 2008 11:35:56 -0000      1.1.2.7
+++ libCERTI/NM_Classes.hh      10 Apr 2008 14:57:49 -0000      1.1.2.8
@@ -221,7 +221,7 @@
        /* specific Getter/Setter */
 protected:
        /* specific field */    
-       bool   constrained;
+       //bool   constrained;
 private:
 };
 
@@ -549,7 +549,7 @@
        /* specific Getter/Setter */
 protected:
        /* specific field */
-       ObjectClassHandle objectClass;
+//     ObjectClassHandle objectClass;
 private:
 };
 
@@ -568,7 +568,7 @@
        void setInteractionClassHandle(InteractionClassHandle interactionClass) 
{this->interactionClass=interactionClass;};
 protected:
        /* specific field */
-       InteractionClassHandle interactionClass;
+//     InteractionClassHandle interactionClass;
 private:
 };
 
@@ -1172,7 +1172,7 @@
        void setRegion(SpaceHandle region) {this->region=region;};
 protected:
        /* specific field */
-       int32_t region;
+//     int32_t region;
 private:
 };
 
@@ -1212,8 +1212,8 @@
        void setObject(ObjectHandle object) {this->object=object;};             
 protected:
        /* specific field */
-       int32_t      region;
-       ObjectHandle object;
+//     int32_t      region;
+//     ObjectHandle object;
 private:
 };
 

Index: libCERTI/ObjectClassAttribute.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClassAttribute.cc,v
retrieving revision 3.27
retrieving revision 3.27.2.1
diff -u -b -r3.27 -r3.27.2.1
--- libCERTI/ObjectClassAttribute.cc    31 Oct 2007 10:30:19 -0000      3.27
+++ libCERTI/ObjectClassAttribute.cc    10 Apr 2008 14:57:49 -0000      3.27.2.1
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: ObjectClassAttribute.cc,v 3.27 2007/10/31 10:30:19 erk Exp $
+// $Id: ObjectClassAttribute.cc,v 3.27.2.1 2008/04/10 14:57:49 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include "ObjectClassAttribute.hh"
@@ -191,7 +191,7 @@
 ObjectClassAttribute::updateBroadcastList(ObjectClassBroadcastList *ocblist,
                                          const RTIRegion *region)
 {
-    switch(ocblist->message->type) {
+    switch(ocblist->message->getType()) {
 
       case NetworkMessage::REFLECT_ATTRIBUTE_VALUES: {
          addFederatesIfOverlap(*ocblist, region, handle);
@@ -209,4 +209,4 @@
 
 } // namespace
 
-// $Id: ObjectClassAttribute.cc,v 3.27 2007/10/31 10:30:19 erk Exp $
+// $Id: ObjectClassAttribute.cc,v 3.27.2.1 2008/04/10 14:57:49 erk Exp $

Index: libCERTI/ObjectClassBroadcastList.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClassBroadcastList.cc,v
retrieving revision 3.18.2.2
retrieving revision 3.18.2.3
diff -u -b -r3.18.2.2 -r3.18.2.3
--- libCERTI/ObjectClassBroadcastList.cc        10 Apr 2008 11:35:56 -0000      
3.18.2.2
+++ libCERTI/ObjectClassBroadcastList.cc        10 Apr 2008 14:57:50 -0000      
3.18.2.3
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: ObjectClassBroadcastList.cc,v 3.18.2.2 2008/04/10 11:35:56 erk Exp $
+// $Id: ObjectClassBroadcastList.cc,v 3.18.2.3 2008/04/10 14:57:50 erk Exp $
 // ----------------------------------------------------------------------------
 
 
@@ -59,18 +59,18 @@
     G.Out(pdGendoc,"enter ObjectClassBroadcastList::adaptMessage");
     G.Out(pdGendoc,"      message->objectClass=%d",message->objectClass);
 
-    if ((message->type != NetworkMessage::REFLECT_ATTRIBUTE_VALUES) &&
-        (message->type != 
NetworkMessage::REQUEST_ATTRIBUTE_OWNERSHIP_ASSUMPTION))
+    if ((message->getType() != NetworkMessage::REFLECT_ATTRIBUTE_VALUES) &&
+        (message->getType() != 
NetworkMessage::REQUEST_ATTRIBUTE_OWNERSHIP_ASSUMPTION))
         throw RTIinternalError("Bad Message type in Broadcast's AdaptMsg.");
 
     // Copy static informations.
-    NetworkMessage *reducedMessage = NM_Factory::create(message->type);    
+    NetworkMessage *reducedMessage = NM_Factory::create(message->getType());   
 
     reducedMessage->exception = message->exception ;
     reducedMessage->federation = message->federation ;
     reducedMessage->federate = message->federate ;
     reducedMessage->object = message->object ;
-    reducedMessage->date = message->date ;
-    reducedMessage->boolean = message->boolean ; // Useful ?
+    reducedMessage->setDate(message->getDate());
+    reducedMessage->boolean = message->boolean ; // FIXME Useful ?
     reducedMessage->objectClass = message->objectClass ;
 
     reducedMessage->label = message->label;
@@ -96,7 +96,7 @@
             // Copy Attribute Handle.
             reducedMessage->handleArray[currentSize] = currentAttrib ;
 
-            if (message->type == NetworkMessage::REFLECT_ATTRIBUTE_VALUES) {
+            if (message->getType() == 
NetworkMessage::REFLECT_ATTRIBUTE_VALUES) {
                 // Copy Attribute Value.
                 message->getValue(i, &length, buffer);
                 reducedMessage->setValue(currentSize, buffer, length);
@@ -285,7 +285,7 @@
 void ObjectClassBroadcastList::sendPendingMessage(SecurityServer *server)
 {
     G.Out(pdGendoc,"enter ObjectClassBroadcastList::sendPendingMessage");
-    switch (message->type) {
+    switch (message->getType()) {
 
       case NetworkMessage::REFLECT_ATTRIBUTE_VALUES:
       case NetworkMessage::REQUEST_ATTRIBUTE_OWNERSHIP_ASSUMPTION:
@@ -391,4 +391,4 @@
 
 } // namespace certi
 
-// $Id: ObjectClassBroadcastList.cc,v 3.18.2.2 2008/04/10 11:35:56 erk Exp $
+// $Id: ObjectClassBroadcastList.cc,v 3.18.2.3 2008/04/10 14:57:50 erk Exp $

Index: libCERTI/NM_Classes.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/Attic/NM_Classes.cc,v
retrieving revision 1.1.2.7
retrieving revision 1.1.2.8
diff -u -b -r1.1.2.7 -r1.1.2.8
--- libCERTI/NM_Classes.cc      10 Apr 2008 11:35:57 -0000      1.1.2.7
+++ libCERTI/NM_Classes.cc      10 Apr 2008 14:57:50 -0000      1.1.2.8
@@ -386,7 +386,7 @@
        this->name = "MESSAGE_NULL";
        this->type = NetworkMessage::MESSAGE_NULL;
        /* specific field init */
-       isDated = true;
+       ////isDated =true;
 }
 NM_Message_Null::~NM_Message_Null() {  
 }
@@ -397,7 +397,7 @@
        this->name = "CREATE_FEDERATION_EXECUTION";
        this->type = NetworkMessage::CREATE_FEDERATION_EXECUTION;
        /* specific field init */
-       isDated = true;
+       ////isDated =true;
 }
 NM_Create_Federation_Execution::~NM_Create_Federation_Execution() {    
 }
@@ -422,7 +422,7 @@
        this->name = "DESTROY_FEDERATION_EXECUTION";
        this->type = NetworkMessage::DESTROY_FEDERATION_EXECUTION;    
        /* specific field init */    
-       isDated = true;
+       ////isDated =true;
 }
 NM_Destroy_Federation_Execution::~NM_Destroy_Federation_Execution() {
 }
@@ -488,7 +488,7 @@
        this->name = "SET_TIME_REGULATING";
        this->type = NetworkMessage::SET_TIME_REGULATING;
        /* specific field init */
-       isDated = true;
+       ////isDated =true;
 }
 NM_Set_Time_Regulating::~NM_Set_Time_Regulating() {
 }
@@ -511,7 +511,7 @@
        this->name = "SET_TIME_CONSTRAINED";
        this->type = NetworkMessage::SET_TIME_CONSTRAINED;
        /* specific field init */
-       isDated = true;
+       ////isDated =true;
 }
 NM_Set_Time_Constrained::~NM_Set_Time_Constrained() {
 }
@@ -534,7 +534,7 @@
        this->name = "REGISTER_FEDERATION_SYNCHRONIZATION_POINT";
        this->type = NetworkMessage::REGISTER_FEDERATION_SYNCHRONIZATION_POINT;
        /* specific field init */
-       isDated    = true;
+       //isDated =true;
        isLabelled = true;
        isTagged   = true;
 }
@@ -547,7 +547,7 @@
        this->name = "SYNCHRONIZATION_POINT_REGISTRATION_SUCCEEDED";
        this->type = 
NetworkMessage::SYNCHRONIZATION_POINT_REGISTRATION_SUCCEEDED;
        /* specific field init */
-       isDated    = true;
+       //isDated =true;
        isLabelled = true;
 }
 
NM_Synchronization_Point_Registration_Succeeded::~NM_Synchronization_Point_Registration_Succeeded()
 {
@@ -559,7 +559,7 @@
        this->name = "ANNOUNCE_SYNCHRONIZATION_POINT";
        this->type = NetworkMessage::ANNOUNCE_SYNCHRONIZATION_POINT;
        /* specific field init */
-       isDated    = true;
+       //isDated =true;
        isLabelled = true;
        isTagged   = true;
 }
@@ -572,7 +572,7 @@
        this->name = "SYNCHRONIZATION_POINT_ACHIEVED";
        this->type = NetworkMessage::SYNCHRONIZATION_POINT_ACHIEVED;
        /* specific field init */
-       isDated    = true;
+       //isDated =true;
        isLabelled = true;
 }
 NM_Synchronization_Point_Achieved::~NM_Synchronization_Point_Achieved() {
@@ -584,7 +584,7 @@
        this->name = "FEDERATION_SYNCHRONIZED";
        this->type = NetworkMessage::FEDERATION_SYNCHRONIZED;
        /* specific field init */
-       isDated    = true;
+       //isDated =true;
        isLabelled = true;
 }
 NM_Federation_Synchronized::~NM_Federation_Synchronized() {
@@ -637,7 +637,7 @@
        this->name = "INITIATE_FEDERATE_SAVE";
        this->type = NetworkMessage::INITIATE_FEDERATE_SAVE;
        /* specific field init */
-       isDated    = true;
+       //isDated =true;
        isLabelled = true;
 }
 NM_Initiate_Federate_Save::~NM_Initiate_Federate_Save() {
@@ -669,7 +669,7 @@
        this->name = "REQUEST_FEDERATION_RESTORE";
        this->type = NetworkMessage::REQUEST_FEDERATION_RESTORE;
        /* specific field init */
-       isDated    = true;
+       //isDated =true;
        isLabelled = true;
 }
 NM_Request_Federation_Restore::~NM_Request_Federation_Restore() {
@@ -701,7 +701,7 @@
        this->name = "REQUEST_FEDERATION_RESTORE_SUCCEEDED";
        this->type = NetworkMessage::REQUEST_FEDERATION_RESTORE_SUCCEEDED;
        /* specific field init */
-       isDated    = true;
+       //isDated =true;
        isLabelled = true;
 }
 
NM_Request_Federation_Restore_Succeeded::~NM_Request_Federation_Restore_Succeeded()
 {
@@ -713,7 +713,7 @@
        this->name = "REQUEST_FEDERATION_RESTORE_FAILED";
        this->type = NetworkMessage::REQUEST_FEDERATION_RESTORE_FAILED;
        /* specific field init */
-       isDated    = true;
+       //isDated =true;
        isLabelled = true;
        isTagged   = true;
 }
@@ -925,7 +925,7 @@
        this->name = "UPDATE_ATTRIBUTE_VALUES";
        this->type = NetworkMessage::UPDATE_ATTRIBUTE_VALUES;
        /* specific field init */
-       isDated    = true;
+       //isDated =true;
        isLabelled = true;
 }
 NM_Update_Attribute_Values::~NM_Update_Attribute_Values() {
@@ -970,7 +970,7 @@
        this->name = "SEND_INTERACTION";
        this->type = NetworkMessage::SEND_INTERACTION;
        /* specific field init */
-       isDated    = true;
+       //isDated =true;
        isLabelled = true;
 }
 NM_Send_Interaction::~NM_Send_Interaction() {
@@ -1015,7 +1015,7 @@
        this->name = "DELETE_OBJECT";
        this->type = NetworkMessage::DELETE_OBJECT;
        /* specific field init */
-       isDated    = true;
+       //isDated =true;
        isLabelled = true;
 }
 NM_Delete_Object::~NM_Delete_Object() {

Index: libCERTI/Interaction.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/Interaction.cc,v
retrieving revision 3.35.2.2
retrieving revision 3.35.2.3
diff -u -b -r3.35.2.2 -r3.35.2.3
--- libCERTI/Interaction.cc     10 Apr 2008 11:35:57 -0000      3.35.2.2
+++ libCERTI/Interaction.cc     10 Apr 2008 14:57:50 -0000      3.35.2.3
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: Interaction.cc,v 3.35.2.2 2008/04/10 11:35:57 erk Exp $
+// $Id: Interaction.cc,v 3.35.2.3 2008/04/10 14:57:50 erk Exp $
 // ----------------------------------------------------------------------------
 
 
@@ -413,8 +413,7 @@
         answer->federation = server->federation();
         answer->federate = federate_handle ;
         answer->interactionClass = handle ; // Interaction Class Handle
-        answer->setBoolean(true) ; // with time
-       answer->date = time ;
+           answer->setDate(time);
 
         answer->label = the_tag;
 
@@ -552,4 +551,4 @@
 
 } // namespace certi
 
-// $Id: Interaction.cc,v 3.35.2.2 2008/04/10 11:35:57 erk Exp $
+// $Id: Interaction.cc,v 3.35.2.3 2008/04/10 14:57:50 erk Exp $

Index: libCERTI/ObjectClass.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClass.cc,v
retrieving revision 3.41.2.2
retrieving revision 3.41.2.3
diff -u -b -r3.41.2.2 -r3.41.2.3
--- libCERTI/ObjectClass.cc     10 Apr 2008 11:35:57 -0000      3.41.2.2
+++ libCERTI/ObjectClass.cc     10 Apr 2008 14:57:50 -0000      3.41.2.3
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: ObjectClass.cc,v 3.41.2.2 2008/04/10 11:35:57 erk Exp $
+// $Id: ObjectClass.cc,v 3.41.2.3 2008/04/10 14:57:50 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include  "Object.hh"
@@ -123,8 +123,8 @@
     G.Out(pdGendoc,"      ObjectClass::broadcastClassMessage 
handle=%d",handle);
 
     // 2. Update message attribute list by removing child's attributes.
-    if ((ocbList->message->type == NetworkMessage::REFLECT_ATTRIBUTE_VALUES) ||
-        (ocbList->message->type == 
NetworkMessage::REQUEST_ATTRIBUTE_OWNERSHIP_ASSUMPTION)) {
+    if ((ocbList->message->getType() == 
NetworkMessage::REFLECT_ATTRIBUTE_VALUES) ||
+        (ocbList->message->getType() == 
NetworkMessage::REQUEST_ATTRIBUTE_OWNERSHIP_ASSUMPTION)) {
         int attr = 0 ;
         while (attr < ocbList->message->handleArraySize) {
             // If the attribute is not in that class, remove it from
@@ -140,7 +140,7 @@
     }
 
     // 3. Add class/attributes subscribers to the list.
-    switch(ocbList->message->type) {
+    switch(ocbList->message->getType()) {
       case NetworkMessage::DISCOVER_OBJECT:
       case NetworkMessage::REMOVE_OBJECT: {
           // For each federate, add it to list if at least one attribute has
@@ -233,13 +233,12 @@
     for (int i = 0 ; i < nbAttributes ; i++) {
         toFederate = diffusionList->DiffArray[i].federate ;
         if (toFederate != 0) {
-            NetworkMessage answer;
-            answer.type = type ;
-            answer.federation = server->federation();
-            answer.federate = theFederate ;
-            answer.exception = e_NO_EXCEPTION ;
-            answer.object = theObjectHandle ;
-            answer.label = theTag;
+            std::auto_ptr<NetworkMessage> answer(NM_Factory::create(type));    
     
+            answer->federation = server->federation();
+            answer->federate = theFederate ;
+            answer->exception = e_NO_EXCEPTION ;
+            answer->object = theObjectHandle ;
+            answer->label = theTag;
 
             int index = 0 ;
             for (int j = i ; j < nbAttributes ; j++) {
@@ -247,14 +246,14 @@
                     D.Out(pdDebug, "handle : %u",
                           diffusionList->DiffArray[j].attribute);
                     diffusionList->DiffArray[j].federate = 0 ;
-                    answer.handleArray[index] = diffusionList
+                    answer->handleArray[index] = diffusionList
                         ->DiffArray[j].attribute ;
                     index++ ;
                 }
             }
-            answer.handleArraySize = index ;
+            answer->handleArraySize = index ;
             D.Out(pdDebug, "Envoi message type %u ", type);
-            sendToFederate(&answer, toFederate);
+            sendToFederate(answer.get(), toFederate);
         }
     }
 }
@@ -365,10 +364,8 @@
         answer->object = the_object ;
         
        // with time
-        answer->date = theTime ;
-        answer->boolean = true ;
-        
-       answer->label = the_tag;
+        answer->setDate(theTime);              
+           answer->setLabel(the_tag);
 
         ocbList = new ObjectClassBroadcastList(answer, 0);
         broadcastClassMessage(ocbList);
@@ -429,15 +426,12 @@
         NetworkMessage *answer = 
NM_Factory::create(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 ;
         
-       answer->label = the_tag;
+           answer->setLabel(the_tag);
 
         ocbList = new ObjectClassBroadcastList(answer, 0);
         broadcastClassMessage(ocbList);
@@ -793,12 +787,11 @@
     list<Object *>::const_iterator o ;
     for (o = objectSet.begin(); o != objectSet.end(); o++) {
        if ((*o)->getOwner() != federate) {
-           NetworkMessage message ;
+           NM_Discover_Object message ;
            D.Out(pdInit,
                  "Sending DiscoverObj to Federate %d for Object %u in class %u 
",
                  federate, (*o)->getHandle(), handle, message.label.c_str());
            
-           message.type = NetworkMessage::DISCOVER_OBJECT ;
            message.federation = server->federation();
            message.federate = federate ;
            message.exception = e_NO_EXCEPTION ;
@@ -909,10 +902,8 @@
         answer->exception = e_NO_EXCEPTION ;
         answer->object = object->getHandle();
         // with time
-        answer->date = the_time ;
-        answer->boolean = true ;
-
-        answer->label = the_tag;
+        answer->setDate(the_time);        
+        answer->setLabel(the_tag);
 
         answer->handleArraySize = the_size ;
 
@@ -973,10 +964,8 @@
         answer->exception = e_NO_EXCEPTION ;
         answer->object = object->getHandle();
         // without time
-        answer->date = 0 ;
-        answer->boolean = false ;
 
-        answer->label = the_tag;
+        answer->setLabel(the_tag);
 
         answer->handleArraySize = the_size ;
 
@@ -1054,7 +1043,7 @@
 
     if (server != NULL) {
         NetworkMessage *AnswerAssumption = 
NM_Factory::create(NetworkMessage::REQUEST_ATTRIBUTE_OWNERSHIP_ASSUMPTION) ;
-        NetworkMessage AnswerDivestiture;
+        NM_Attribute_Ownership_Divestiture_Notification AnswerDivestiture;
 
         AnswerAssumption->handleArraySize = theListSize ;
 
@@ -1110,11 +1099,8 @@
         }
 
         if (compteur_divestiture !=0) {
-            AnswerDivestiture.type =
-                NetworkMessage::ATTRIBUTE_OWNERSHIP_DIVESTITURE_NOTIFICATION ;
             AnswerDivestiture.federation = server->federation();
             AnswerDivestiture.federate = theFederateHandle ;
-            AnswerDivestiture.exception = e_NO_EXCEPTION ;
             AnswerDivestiture.object = theObjectHandle ;
             AnswerDivestiture.label =  std::string("");
             AnswerDivestiture.handleArraySize = compteur_divestiture ;
@@ -1376,7 +1362,6 @@
         }
 
         if (compteur_assumption != 0) {
-            AnswerAssumption->type = 
NetworkMessage::REQUEST_ATTRIBUTE_OWNERSHIP_ASSUMPTION ;
             AnswerAssumption->federation = server->federation();
             AnswerAssumption->federate = theFederateHandle ;
             AnswerAssumption->exception = e_NO_EXCEPTION ;
@@ -1818,4 +1803,4 @@
 
 } // namespace certi
 
-// $Id: ObjectClass.cc,v 3.41.2.2 2008/04/10 11:35:57 erk Exp $
+// $Id: ObjectClass.cc,v 3.41.2.3 2008/04/10 14:57:50 erk Exp $

Index: libCERTI/NetworkMessage.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/NetworkMessage.cc,v
retrieving revision 3.28.2.5
retrieving revision 3.28.2.6
diff -u -b -r3.28.2.5 -r3.28.2.6
--- libCERTI/NetworkMessage.cc  10 Apr 2008 11:35:57 -0000      3.28.2.5
+++ libCERTI/NetworkMessage.cc  10 Apr 2008 14:57:50 -0000      3.28.2.6
@@ -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.cc,v 3.28.2.5 2008/04/10 11:35:57 erk Exp $
+// $Id: NetworkMessage.cc,v 3.28.2.6 2008/04/10 14:57:50 erk Exp $
 // ----------------------------------------------------------------------------
 
 
@@ -50,6 +50,7 @@
 
     federationName = std::string("") ;
     federateName[0] = '\0' ;
+        
     label[0] = '\0' ;
     FEDid = std::string("") ;
 
@@ -230,4 +231,4 @@
 
 } // namespace certi
 
-// $Id: NetworkMessage.cc,v 3.28.2.5 2008/04/10 11:35:57 erk Exp $
+// $Id: NetworkMessage.cc,v 3.28.2.6 2008/04/10 14:57:50 erk Exp $




reply via email to

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