certi-cvs
[Top][All Lists]
Advanced

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

[certi-cvs] certi scripts/NW_MessageType.ods libCERTI/Netwo... [br_DEV_H


From: certi-cvs
Subject: [certi-cvs] certi scripts/NW_MessageType.ods libCERTI/Netwo... [br_DEV_HETEROGENEOUS]
Date: Wed, 09 Apr 2008 14:16:34 +0000

CVSROOT:        /sources/certi
Module name:    certi
Branch:         br_DEV_HETEROGENEOUS
Changes by:     Eric NOULARD <erk>      08/04/09 14:16:34

Modified files:
        scripts        : NW_MessageType.ods 
        libCERTI       : NetworkMessage.hh NM_Classes.hh BasicMessage.hh 
                         BasicMessage.cc NetworkMessage_RW.cc 
                         NetworkMessage.cc NM_Classes.cc 
        RTIG           : RTIG.cc 

Log message:
        Added needed virtual constructor for NetworkMessage

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/NW_MessageType.ods?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&rev=1.1.2.5
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NetworkMessage.hh?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.30.2.4&r2=3.30.2.5
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NM_Classes.hh?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=1.1.2.5&r2=1.1.2.6
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/BasicMessage.hh?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.7.2.1&r2=3.7.2.2
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/BasicMessage.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.9.2.1&r2=3.9.2.2
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NetworkMessage_RW.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.45.2.3&r2=3.45.2.4
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NetworkMessage.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.28.2.3&r2=3.28.2.4
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NM_Classes.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=1.1.2.5&r2=1.1.2.6
http://cvs.savannah.gnu.org/viewcvs/certi/RTIG/RTIG.cc?cvsroot=certi&only_with_tag=br_DEV_HETEROGENEOUS&r1=3.36.2.1&r2=3.36.2.2

Patches:
Index: scripts/NW_MessageType.ods
===================================================================
RCS file: /sources/certi/certi/scripts/Attic/NW_MessageType.ods,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -b -r1.1.2.4 -r1.1.2.5
Binary files /tmp/cvsgXg79v and /tmp/cvsIek0ny differ

Index: libCERTI/NetworkMessage.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/NetworkMessage.hh,v
retrieving revision 3.30.2.4
retrieving revision 3.30.2.5
diff -u -b -r3.30.2.4 -r3.30.2.5
--- libCERTI/NetworkMessage.hh  9 Apr 2008 10:34:03 -0000       3.30.2.4
+++ libCERTI/NetworkMessage.hh  9 Apr 2008 14:16:30 -0000       3.30.2.5
@@ -17,7 +17,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: NetworkMessage.hh,v 3.30.2.4 2008/04/09 10:34:03 erk Exp $
+// $Id: NetworkMessage.hh,v 3.30.2.5 2008/04/09 14:16:30 erk Exp $
 // ----------------------------------------------------------------------------
 
 #ifndef CERTI_NETWORK_MESSAGE_HH
@@ -52,44 +52,6 @@
 class CERTI_EXPORT NetworkMessage : public BasicMessage
 {
 public:
-       struct TimeStruct {
-               FederationTime date ; // Date, Logical Time
-               bool R_or_C ; // IsRegulator or IsConstrained
-       };
-
-       struct T_O_Struct {
-               ObjectClassHandle handle ;
-               UShort handleArraySize ;
-               TransportType transport ;
-               OrderType order ;
-       };
-
-       struct JoinStruct {
-               int NbReg ;
-               unsigned long AdrMC ;
-               unsigned long Addr ;
-               unsigned int peer ;
-       };
-
-       struct O_I_Struct {
-               ObjectClassHandle handle ;
-               UShort size ;
-               FederationTime date ;
-       };
-
-       struct DDM_Struct {
-               SpaceHandle space ;
-               DimensionHandle dimension ;
-               RegionHandle region ;
-       };
-
-       union HeaderUnion {
-               TimeStruct time ;
-               T_O_Struct T_O ;
-               JoinStruct Join ;
-               O_I_Struct O_I ;
-               DDM_Struct ddm ;
-       };
 
        typedef enum Type {
                NOT_USED = 0, // Not used.
@@ -178,15 +140,6 @@
                LAST
        } Message_T;
 
-       struct HeaderStruct {
-               Type type ;
-               TypeException exception ;
-               Handle federation ;
-               FederateHandle federate ;
-               UShort bodySize ;
-               HeaderUnion VP ; // Variable Part
-       };
-
        NetworkMessage();
     virtual ~NetworkMessage();
        
@@ -242,14 +195,13 @@
 
        void setAHS(const AttributeHandle *, int);
 
+       
        void setBoolean(bool);
        bool getBoolean() const { return boolean ; };
 
                
        UShort number ;
 
-       
-
        std::string federationName ;
        std::string federateName;
        std::string FEDid ;
@@ -260,6 +212,13 @@
        bool regulator ;
        bool constrained ;
 
+       /* NM_DDM_Basr class fields */
+       SpaceHandle            space;
+       int32_t                nbExtents;
+       int32_t                region;
+       ObjectHandle           object;
+       ObjectClassHandle      objectClass;
+       InteractionClassHandle interactionClass;
        bool boolean ;
 
        /**
@@ -298,26 +257,16 @@
        ObjectHandle firstId ;
        ObjectHandle lastId ;
 
-       ObjectHandle object ;
-       ObjectClassHandle objectClass ;
-       InteractionClassHandle interactionClass ;
-
        EventRetractionHandle eventRetraction ;
 
+       /* NM_WithHandleArray class specific fields */
        UShort handleArraySize ;
+       /* FIXME will make this a vector<AttributeHandle> */
        AttributeHandle handleArray[MAX_ATTRIBUTES_PER_CLASS] ;
 
        TransportType transport ;
        OrderType order ;
 
-       SpaceHandle space ;
-       long nbExtents ;
-       long region ;
-
-       
-       
-       void setFEDid(const char *NewFEDid);
-       
        /** The name corresponding to message type */
        const std::string getName() const {return name;}
        
@@ -353,41 +302,7 @@
         */
        std::string name;
        
-
-
 private:
-       
-       
-       // Read a Message Body from a Socket. Should be called after ReadHeader.
-       void readBody(Socket *Socket);
-
-       // Read a Header from a socket, and process it to read its content.
-       // Return RTI_TRUE if the ReadBody Method has to be called.
-       bool readHeader(Socket *Socket);
-
-       // The message is written onto the socket by WriteHeader if no body
-       // is required, or by WriteBody is a body has been required by 
WriteHeader.
-
-       // Prepare and write a Body to a socket. Should be called after
-       // WriteHeader.
-       void writeBody(Socket *Socket);
-
-       // Prepare and Write a Header to a Socket, and return RTI_TRUE
-       // if the WriteBody method has to be called.
-       bool writeHeader(Socket *Socket);
-
-       // -- Others Private Write Methods --
-       void writeFEDid();
-       void writeFederationName();
-
-       // -- Others Private Read Methods --
-       void readLabel();
-       void readTag();
-       void readFederationName();
-       void readFederateName();
-       void readFEDid();
-
-       HeaderStruct  Header;    
        // ValueArray is now a ValueLengthPair
        ValueLengthPair ValueArray[MAX_ATTRIBUTES_PER_CLASS] ;
 };
@@ -400,4 +315,4 @@
 
 #endif // CERTI_NETWORK_MESSAGE_HH
 
-// $Id: NetworkMessage.hh,v 3.30.2.4 2008/04/09 10:34:03 erk Exp $
+// $Id: NetworkMessage.hh,v 3.30.2.5 2008/04/09 14:16:30 erk Exp $

Index: libCERTI/NM_Classes.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/Attic/NM_Classes.hh,v
retrieving revision 1.1.2.5
retrieving revision 1.1.2.6
diff -u -b -r1.1.2.5 -r1.1.2.6
--- libCERTI/NM_Classes.hh      9 Apr 2008 10:34:03 -0000       1.1.2.5
+++ libCERTI/NM_Classes.hh      9 Apr 2008 14:16:31 -0000       1.1.2.6
@@ -31,6 +31,7 @@
 class NM_Factory {
 public:
        static NetworkMessage* create(NetworkMessage::Message_T type) throw 
(RTIinternalError);
+       static NetworkMessage* receive(Socket* socket) throw (RTIinternalError);
 };
 
 class CERTI_EXPORT NM_WithHandleArray : public NetworkMessage {
@@ -45,12 +46,40 @@
        void setHandle(AttributeHandle h, int i) {handleArray[i]=h;};
 protected:
        /* specific field */
-       UShort handleArraySize ;
-       /* FIXME will make this a vector<AttributeHandle> */
-       AttributeHandle handleArray[MAX_ATTRIBUTES_PER_CLASS];
 private:
 };
 
+class CERTI_EXPORT NM_DDM_Base : public NM_WithHandleArray {
+public:
+       typedef NM_WithHandleArray Super;
+       NM_DDM_Base();
+       virtual ~NM_DDM_Base();
+       virtual void serialize()   = 0;
+       virtual void deserialize() = 0; 
+       /* specific Getter/Setter */    
+       const SpaceHandle getSpace() const {return space;};
+       void setSpace(SpaceHandle space) {this->space=space;};
+
+       const int32_t geNbExtents() const {return nbExtents;};
+       void setNbExtents(int32_t nbExtents) {this->nbExtents=nbExtents;};
+
+       const int32_t getRegion() const {return region;};
+       void setRegion(int32_t region) {this->region=region;};  
+
+       const ObjectHandle getObject() const {return object;};
+       void setObject(ObjectHandle object) {this->object=object;};
+
+       const ObjectClassHandle getObjectClass() const {return objectClass;};
+       void setObjectClass(ObjectClassHandle objectClass) 
{this->objectClass=objectClass;};
+
+       const InteractionClassHandle getInteractionClass() const {return 
interactionClass;};
+       void setInteractionClass(InteractionClassHandle interactionClass) 
{this->interactionClass=interactionClass;};
+protected:
+       /* specific field */
+private:
+};
+
+
 /*<BEGIN>---------- Not_Used ------------<BEGIN>*/
 class CERTI_EXPORT NM_Not_Used : public NetworkMessage {
 public:
@@ -1109,14 +1138,18 @@
 /*<END>---------- Confirm_Attribute_Ownership_Acquisition_Cancellation 
------------<END>*/
 
 /*<BEGIN>---------- DDM_Create_Region ------------<BEGIN>*/
-class CERTI_EXPORT NM_DDM_Create_Region : public NetworkMessage {
+class CERTI_EXPORT NM_DDM_Create_Region : public NM_DDM_Base {
 public:
-       typedef NetworkMessage Super;
+       typedef NM_DDM_Base Super;
        NM_DDM_Create_Region();
        virtual ~NM_DDM_Create_Region();
        virtual void serialize();
        virtual void deserialize();
        /* specific Getter/Setter */
+       const SpaceHandle getSpace() const {return space;};
+       void setSpace(SpaceHandle space) {this->space=space;};  
+       const int32_t getRegion() const {return region;};
+       void setRegion(SpaceHandle region) {this->region=region;};
 protected:
        /* specific field */
        SpaceHandle space;
@@ -1128,57 +1161,69 @@
 /*<END>---------- DDM_Create_Region ------------<END>*/
 
 /*<BEGIN>---------- DDM_Modify_Region ------------<BEGIN>*/
-class CERTI_EXPORT NM_DDM_Modify_Region : public NetworkMessage {
+class CERTI_EXPORT NM_DDM_Modify_Region : public NM_DDM_Base {
 public:
-       typedef NetworkMessage Super;
+       typedef NM_DDM_Base Super;
        NM_DDM_Modify_Region();
        virtual ~NM_DDM_Modify_Region();
        virtual void serialize();
        virtual void deserialize();
        /* specific Getter/Setter */
+       const int32_t getRegion() const {return region;};
+       void setRegion(SpaceHandle region) {this->region=region;};
 protected:
        /* specific field */
+       int32_t region;
 private:
 };
 
 /*<END>---------- DDM_Modify_Region ------------<END>*/
 
 /*<BEGIN>---------- DDM_Delete_Region ------------<BEGIN>*/
-class CERTI_EXPORT NM_DDM_Delete_Region : public NetworkMessage {
+class CERTI_EXPORT NM_DDM_Delete_Region : public NM_DDM_Base {
 public:
-       typedef NetworkMessage Super;
+       typedef NM_DDM_Base Super;
        NM_DDM_Delete_Region();
        virtual ~NM_DDM_Delete_Region();
        virtual void serialize();
        virtual void deserialize();
        /* specific Getter/Setter */
+       const int32_t getRegion() const {return region;};
+       void setRegion(SpaceHandle region) {this->region=region;};
 protected:
        /* specific field */
+       int32_t region; 
 private:
 };
 
 /*<END>---------- DDM_Delete_Region ------------<END>*/
 
 /*<BEGIN>---------- DDM_Associate_Region ------------<BEGIN>*/
-class CERTI_EXPORT NM_DDM_Associate_Region : public NetworkMessage {
+class CERTI_EXPORT NM_DDM_Associate_Region : public NM_DDM_Base {
 public:
-       typedef NetworkMessage Super;
+       typedef NM_DDM_Base Super;
        NM_DDM_Associate_Region();
        virtual ~NM_DDM_Associate_Region();
        virtual void serialize();
        virtual void deserialize();
        /* specific Getter/Setter */
+       const int32_t getRegion() const {return region;};
+       void setRegion(SpaceHandle region) {this->region=region;};
+       const ObjectHandle getObject() const {return object;};
+       void setObject(ObjectHandle object) {this->object=object;};             
 protected:
        /* specific field */
+       int32_t      region;
+       ObjectHandle object;
 private:
 };
 
 /*<END>---------- DDM_Associate_Region ------------<END>*/
 
 /*<BEGIN>---------- DDM_Register_Object ------------<BEGIN>*/
-class CERTI_EXPORT NM_DDM_Register_Object : public NetworkMessage {
+class CERTI_EXPORT NM_DDM_Register_Object : public NM_DDM_Base {
 public:
-       typedef NetworkMessage Super;
+       typedef NM_DDM_Base Super;
        NM_DDM_Register_Object();
        virtual ~NM_DDM_Register_Object();
        virtual void serialize();
@@ -1192,9 +1237,9 @@
 /*<END>---------- DDM_Register_Object ------------<END>*/
 
 /*<BEGIN>---------- DDM_Unassociate_Region ------------<BEGIN>*/
-class CERTI_EXPORT NM_DDM_Unassociate_Region : public NetworkMessage {
+class CERTI_EXPORT NM_DDM_Unassociate_Region : public NM_DDM_Base {
 public:
-       typedef NetworkMessage Super;
+       typedef NM_DDM_Base Super;
        NM_DDM_Unassociate_Region();
        virtual ~NM_DDM_Unassociate_Region();
        virtual void serialize();
@@ -1208,9 +1253,9 @@
 /*<END>---------- DDM_Unassociate_Region ------------<END>*/
 
 /*<BEGIN>---------- DDM_Subscribe_Attributes ------------<BEGIN>*/
-class CERTI_EXPORT NM_DDM_Subscribe_Attributes : public NetworkMessage {
+class CERTI_EXPORT NM_DDM_Subscribe_Attributes : public NM_DDM_Base {
 public:
-       typedef NetworkMessage Super;
+       typedef NM_DDM_Base Super;
        NM_DDM_Subscribe_Attributes();
        virtual ~NM_DDM_Subscribe_Attributes();
        virtual void serialize();
@@ -1224,9 +1269,9 @@
 /*<END>---------- DDM_Subscribe_Attributes ------------<END>*/
 
 /*<BEGIN>---------- DDM_Unsubscribe_Attributes ------------<BEGIN>*/
-class CERTI_EXPORT NM_DDM_Unsubscribe_Attributes : public NetworkMessage {
+class CERTI_EXPORT NM_DDM_Unsubscribe_Attributes : public NM_DDM_Base {
 public:
-       typedef NetworkMessage Super;
+       typedef NM_DDM_Base Super;
        NM_DDM_Unsubscribe_Attributes();
        virtual ~NM_DDM_Unsubscribe_Attributes();
        virtual void serialize();
@@ -1240,9 +1285,9 @@
 /*<END>---------- DDM_Unsubscribe_Attributes ------------<END>*/
 
 /*<BEGIN>---------- DDM_Subscribe_Interaction ------------<BEGIN>*/
-class CERTI_EXPORT NM_DDM_Subscribe_Interaction : public NetworkMessage {
+class CERTI_EXPORT NM_DDM_Subscribe_Interaction : public NM_DDM_Base {
 public:
-       typedef NetworkMessage Super;
+       typedef NM_DDM_Base Super;
        NM_DDM_Subscribe_Interaction();
        virtual ~NM_DDM_Subscribe_Interaction();
        virtual void serialize();
@@ -1256,13 +1301,11 @@
 /*<END>---------- DDM_Subscribe_Interaction ------------<END>*/
 
 /*<BEGIN>---------- DDM_Unsubscribe_Interaction ------------<BEGIN>*/
-class CERTI_EXPORT NM_DDM_Unsubscribe_Interaction : public NetworkMessage {
+class CERTI_EXPORT NM_DDM_Unsubscribe_Interaction : public 
NM_DDM_Subscribe_Interaction {
 public:
-       typedef NetworkMessage Super;
+       typedef NM_DDM_Subscribe_Interaction Super;
        NM_DDM_Unsubscribe_Interaction();
        virtual ~NM_DDM_Unsubscribe_Interaction();
-       virtual void serialize();
-       virtual void deserialize();
        /* specific Getter/Setter */
 protected:
        /* specific field */

Index: libCERTI/BasicMessage.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/BasicMessage.hh,v
retrieving revision 3.7.2.1
retrieving revision 3.7.2.2
diff -u -b -r3.7.2.1 -r3.7.2.2
--- libCERTI/BasicMessage.hh    18 Mar 2008 15:55:56 -0000      3.7.2.1
+++ libCERTI/BasicMessage.hh    9 Apr 2008 14:16:31 -0000       3.7.2.2
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: BasicMessage.hh,v 3.7.2.1 2008/03/18 15:55:56 erk Exp $
+// $Id: BasicMessage.hh,v 3.7.2.2 2008/04/09 14:16:31 erk Exp $
 // ----------------------------------------------------------------------------
 
 #ifndef LIBCERTI_BASIC_MESSAGE
@@ -47,6 +47,7 @@
     void setRegions(const BaseRegion **, int);
     void setRegions(const std::vector<RegionHandle> &);
     const std::vector<RegionHandle> &getRegions() const ;
+    void copyMsgBufFrom(BasicMessage& msg);
         
 protected:
     void readExtents();
@@ -57,11 +58,17 @@
 
     std::vector<Extent> extents ;
     std::vector<RegionHandle> regions ;
+    /**
+     * The buffer used to easilly serialize/deserialize a message
+     * in order to easilly send/receive message content using socket
+     * like API.    
+     */
     MessageBuffer msgBuf;
+    
 };
 
 } // namespace certi
 
 #endif // LIBCERTI_BASIC_MESSAGE
 
-// $Id: BasicMessage.hh,v 3.7.2.1 2008/03/18 15:55:56 erk Exp $
+// $Id: BasicMessage.hh,v 3.7.2.2 2008/04/09 14:16:31 erk Exp $

Index: libCERTI/BasicMessage.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/BasicMessage.cc,v
retrieving revision 3.9.2.1
retrieving revision 3.9.2.2
diff -u -b -r3.9.2.1 -r3.9.2.2
--- libCERTI/BasicMessage.cc    18 Mar 2008 15:55:56 -0000      3.9.2.1
+++ libCERTI/BasicMessage.cc    9 Apr 2008 14:16:32 -0000       3.9.2.2
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: BasicMessage.cc,v 3.9.2.1 2008/03/18 15:55:56 erk Exp $
+// $Id: BasicMessage.cc,v 3.9.2.2 2008/04/09 14:16:32 erk Exp $
 // ----------------------------------------------------------------------------
 
 
@@ -31,7 +31,7 @@
 using std::vector;
 using std::endl;
 
-static pdCDebug D("MESSAGE",__FILE__ );
+static pdCDebug D("BM","BasicMessage:");
 
 namespace certi {
 
@@ -146,6 +146,11 @@
        return regions;
 }
 
+void BasicMessage::copyMsgBufFrom(BasicMessage& msg) {
+       this->msgBuf.resize(msg.msgBuf.size());
+       memcpy(this->msgBuf(0),msg.msgBuf(0),msg.msgBuf.size());
+       msgBuf.assumeSizeFromReservedBytes();
+}
 } // namespace certi
 
-// $Id: BasicMessage.cc,v 3.9.2.1 2008/03/18 15:55:56 erk Exp $
+// $Id: BasicMessage.cc,v 3.9.2.2 2008/04/09 14:16:32 erk Exp $

Index: libCERTI/NetworkMessage_RW.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/NetworkMessage_RW.cc,v
retrieving revision 3.45.2.3
retrieving revision 3.45.2.4
diff -u -b -r3.45.2.3 -r3.45.2.4
--- libCERTI/NetworkMessage_RW.cc       9 Apr 2008 08:43:46 -0000       3.45.2.3
+++ libCERTI/NetworkMessage_RW.cc       9 Apr 2008 14:16:32 -0000       3.45.2.4
@@ -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.3 2008/04/09 08:43:46 erk Exp $
+// $Id: NetworkMessage_RW.cc,v 3.45.2.4 2008/04/09 14:16:32 erk Exp $
 // ----------------------------------------------------------------------------
 
 
@@ -29,794 +29,16 @@
 
 namespace certi {
 
-static PrettyDebug D("RTIG_MSG", "(NetWorkMS) - ");
+static PrettyDebug D("RTIG_MSG", "NetworkMessage:");
 static PrettyDebug G("GENDOC",__FILE__ );
 
 // ----------------------------------------------------------------------------
-// readBody
-void
-NetworkMessage::readBody(Socket *socket)
-{      
-       unsigned short i;
-       G.Out(pdGendoc,"enter NetworkMessage::readBody");
-       if (Header.bodySize == 0) {
-               throw RTIinternalError("ReadBody should not have been called.");
-       }
-
-       // 1. Read Body from socket.
-       // NOTHING TO DO all buffer read in readHeader
-       // FIXME need to get rid of Header/Body distinction.
-
-       // 3. Read informations from Message Body according to message type.
-       //D.Mes(pdMessage, 'N',Header.type);    
-
-       if (Header.exception != e_NO_EXCEPTION) {
-               exceptionReason = msgBuf.read_string();
-       }
-       else {
-               D.Mes(pdDebug,'N',Header.type,"readBody::");
-               switch(Header.type) {
-               // line number, FEDid, Value Array size and Value array (line 
contents)
-               case GET_FED_FILE:
-                       number = msgBuf.read_uint16();
-                       readFEDid();
-                       if ( number >= 1 ) // open (0) and close (0) no more 
information
-                       {
-                               ValueArray[0].length = msgBuf.read_int32();
-                               msgBuf.read_bytes(ValueArray[0].value, 
ValueArray[0].length) ;
-                       }
-                       break ;
-
-               case UPDATE_ATTRIBUTE_VALUES:
-                       object = msgBuf.read_int32();
-                       readLabel();
-                       boolean = msgBuf.read_uint32();   // true means with 
time
-                       msgBuf.read_bytes((char *) handleArray, handleArraySize 
* sizeof(AttributeHandle));
-                       for (i = 0 ; i < handleArraySize ; i ++) {
-                               ValueArray[i].length = msgBuf.read_int32();
-                               msgBuf.read_bytes(ValueArray[i].value, 
ValueArray[i].length) ;
-                       }
-                       break ;
-
-               case REFLECT_ATTRIBUTE_VALUES:
-                       object = msgBuf.read_int32();
-                       readLabel();
-                       boolean = msgBuf.read_int32();    // true means with 
time
-                       msgBuf.read_bytes((char *) handleArray, handleArraySize 
* sizeof(AttributeHandle));
-                       for (i = 0 ; i < handleArraySize ; i ++) {
-                               ValueArray[i].length = msgBuf.read_int32();
-                               msgBuf.read_bytes(ValueArray[i].value, 
ValueArray[i].length) ;
-                       }
-                       break ;
-
-               case PROVIDE_ATTRIBUTE_VALUE_UPDATE:
-                       object = msgBuf.read_int32();
-                       for (i = 0 ; i < handleArraySize ; i ++) {
-                               handleArray[i] = msgBuf.read_int16();
-                       }
-                       break ;
-
-                       // -- O_I Variable Part With Date(Body Not Empty) --
-               case SEND_INTERACTION:
-               case RECEIVE_INTERACTION:
-                       readLabel();
-                       boolean = msgBuf.read_int32();   // true means with time
-                       msgBuf.read_bytes((char *) handleArray,
-                                       handleArraySize * 
sizeof(AttributeHandle));
-                       for (i = 0 ; i < handleArraySize ; i ++) {
-                               ValueArray[i].length = msgBuf.read_int32() ;
-                               msgBuf.read_bytes(ValueArray[i].value, 
ValueArray[i].length) ;
-                       }
-                       region = msgBuf.read_int32();
-                       break ;
-
-
-               case REQUEST_OBJECT_ATTRIBUTE_VALUE_UPDATE:
-                       object = msgBuf.read_int32();                   
-                       for (i = 0 ; i < handleArraySize ; i ++) {
-                               handleArray[i] = msgBuf.read_int16();
-                       }
-                       break ;
-
-               case CREATE_FEDERATION_EXECUTION:
-                       readFederationName();
-                       readFEDid();
-                       break ;
-
-               case DESTROY_FEDERATION_EXECUTION:
-                       readFederationName();
-                       break ;                 
-
-               case REGISTER_FEDERATION_SYNCHRONIZATION_POINT:
-                       readLabel();
-                       readTag();
-                       boolean = msgBuf.read_int32();
-                       // boolean true means there is an handleArray
-                       if ( boolean)
-                       {
-                               handleArraySize = msgBuf.read_int16();
-                               for (i = 0 ; i < handleArraySize ; i ++)
-                                       handleArray[i] = msgBuf.read_int16();
-                       }
-                       break ;
-
-               case ANNOUNCE_SYNCHRONIZATION_POINT:
-                       readLabel();
-                       readTag();
-                       break ;
-
-               case SYNCHRONIZATION_POINT_ACHIEVED:
-               case SYNCHRONIZATION_POINT_REGISTRATION_SUCCEEDED:
-               case FEDERATION_SYNCHRONIZED:
-               case REQUEST_FEDERATION_RESTORE:
-                       readLabel();
-                       break ;
-
-               case REQUEST_FEDERATION_RESTORE_SUCCEEDED:
-                       readLabel();
-                       G.Out(pdGendoc,"NetworkMessage::readBody type R_F_R_S 
label= %s",label.c_str());
-                       break ;
-
-               case INITIATE_FEDERATE_RESTORE:
-                       readLabel();
-                       break ;
-
-               case INITIATE_FEDERATE_SAVE:
-                       readLabel();
-                       // boolean true means with time (in the header)
-                       boolean = msgBuf.read_int32();
-                       break ;
-
-               case REQUEST_FEDERATION_SAVE:
-                       readLabel();
-                       // boolean true means with time (in the header)
-                       boolean = msgBuf.read_int32();
-                       break ;
-
-               case REQUEST_FEDERATION_RESTORE_FAILED:
-                       readLabel();
-                       readTag();
-                       break ;
-
-               case DELETE_OBJECT:
-               case REMOVE_OBJECT:
-                       object = msgBuf.read_int32();
-                       boolean = msgBuf.read_int32();   // true means with time
-                       readLabel();
-                       break ;
-
-                       // -- No Variable Part --
-
-               case IS_ATTRIBUTE_OWNED_BY_FEDERATE:
-               case INFORM_ATTRIBUTE_OWNERSHIP:
-               case ATTRIBUTE_IS_NOT_OWNED:
-               case QUERY_ATTRIBUTE_OWNERSHIP:
-                       object = msgBuf.read_int32();
-                       handleArray[0] = msgBuf.read_int16();
-                       readLabel();
-                       break ;
-
-               case NEGOTIATED_ATTRIBUTE_OWNERSHIP_DIVESTITURE:
-               case REQUEST_ATTRIBUTE_OWNERSHIP_ASSUMPTION:
-               case ATTRIBUTE_OWNERSHIP_ACQUISITION:
-               case REQUEST_ATTRIBUTE_OWNERSHIP_RELEASE:
-                       object = msgBuf.read_int32();
-                       handleArraySize = msgBuf.read_int16();
-                       for (i = 0 ; i < handleArraySize ; i ++)
-                               handleArray[i] = msgBuf.read_int16();
-                       readLabel();
-                       break ;
-
-               case ATTRIBUTE_OWNERSHIP_ACQUISITION_IF_AVAILABLE:
-               case ATTRIBUTE_OWNERSHIP_ACQUISITION_NOTIFICATION:
-               case ATTRIBUTE_OWNERSHIP_UNAVAILABLE:
-               case UNCONDITIONAL_ATTRIBUTE_OWNERSHIP_DIVESTITURE:
-               case ATTRIBUTE_OWNERSHIP_DIVESTITURE_NOTIFICATION:
-               case CANCEL_NEGOTIATED_ATTRIBUTE_OWNERSHIP_DIVESTITURE:
-               case ATTRIBUTE_OWNERSHIP_RELEASE_RESPONSE:
-               case CANCEL_ATTRIBUTE_OWNERSHIP_ACQUISITION:
-               case CONFIRM_ATTRIBUTE_OWNERSHIP_ACQUISITION_CANCELLATION:
-                       object = msgBuf.read_int32();
-                       handleArraySize = msgBuf.read_int16();
-                       for (i = 0 ; i < handleArraySize ; i ++)
-                               handleArray[i] = msgBuf.read_int16();
-                       break ;
-
-               case DDM_CREATE_REGION:
-                       space = msgBuf.read_int32();
-                       nbExtents = msgBuf.read_int32();
-                       region = msgBuf.read_int32();
-                       break ;
-
-                       // -- Join Variable Part --
-
-               case JOIN_FEDERATION_EXECUTION:
-                       readFederationName();
-                       readFederateName();
-                       break ;
-
-                       // -- O_I Variable Part(Body not empty) --
-
-               case PUBLISH_OBJECT_CLASS:
-               case SUBSCRIBE_OBJECT_CLASS:
-                       for (i = 0 ; i < handleArraySize ; i ++)
-                               handleArray[i] = msgBuf.read_int16();
-                       break ;
-
-               case REGISTER_OBJECT:
-               case DISCOVER_OBJECT:
-                       object = msgBuf.read_int32();
-                       readLabel();
-                       break ;
-
-               case DDM_MODIFY_REGION:
-                       readExtents();
-                       break ;
-
-               case DDM_ASSOCIATE_REGION:
-                       object = msgBuf.read_int32();
-                       region = msgBuf.read_int32();
-                       boolean = msgBuf.read_int32();
-                       handleArraySize = msgBuf.read_int16();
-                       for (i = 0 ; i < handleArraySize ; i ++)
-                               handleArray[i] = msgBuf.read_int16();
-                       break ;
-
-               case DDM_SUBSCRIBE_ATTRIBUTES:
-                       objectClass = msgBuf.read_int32();
-                       region = msgBuf.read_int32();
-                       boolean = msgBuf.read_int32();
-                       handleArraySize = msgBuf.read_int16();
-                       for (i = 0 ; i < handleArraySize ; i ++)
-                               handleArray[i] = msgBuf.read_int16();
-                       break ;
-
-               case DDM_UNASSOCIATE_REGION:
-                       object = msgBuf.read_int32();
-                       region = msgBuf.read_int32();
-                       break ;
-
-               case DDM_UNSUBSCRIBE_ATTRIBUTES:            
-                       objectClass = msgBuf.read_int32();
-                       region = msgBuf.read_int32();
-                       break ;
-
-               case DDM_SUBSCRIBE_INTERACTION:
-               case DDM_UNSUBSCRIBE_INTERACTION:
-                       interactionClass = msgBuf.read_int32();
-                       region = msgBuf.read_int32();
-                       boolean = msgBuf.read_int32();
-                       break ;
-
-               case DDM_REGISTER_OBJECT:
-                       objectClass = msgBuf.read_int32();
-                       object = msgBuf.read_int32();
-                       region = msgBuf.read_int32();
-                       readTag();
-                       handleArraySize = msgBuf.read_int16();
-                       for (i = 0 ; i < handleArraySize ; i ++)
-                               handleArray[i] = msgBuf.read_int16();
-                       break ;
-
-               default:
-                       D.Out(pdExcept, "Unknown type %d in ReadBody.", 
Header.type);
-                       throw RTIinternalError("Unknown/Unimplemented type for 
body.");
-               }
-       }
-       G.Out(pdGendoc,"exit NetworkMessage::readBody");
-}
-
-// ----------------------------------------------------------------------------
-bool
-NetworkMessage::readHeader(Socket *socket)
-{
-       G.Out(pdGendoc,"enter NetworkMessage::readHeader");
-       // 1- Read reserved bytes from socket
-       D.Out(pdDebug,"reading %d bytes for header",msgBuf.reservedBytes);
-       socket->receive(msgBuf(0), msgBuf.reservedBytes);       
-       msgBuf.show(msgBuf(0),5);
-       fflush(stdout);
-       msgBuf.assumeSizeFromReservedBytes();
-       D.Out(pdDebug,"Got a MsgBuf of size %d bytes (including %d 
reserved)",msgBuf.size(),msgBuf.reservedBytes);
-       
socket->receive(msgBuf(msgBuf.reservedBytes),msgBuf.size()-msgBuf.reservedBytes);
-
-       // 3- Unmarshall Header
-       Header.type        = 
static_cast<certi::NetworkMessage::Type>(msgBuf.read_int32());
-       Header.exception   = 
static_cast<certi::TypeException>(msgBuf.read_int32());
-       Header.federate    = msgBuf.read_int32();
-       Header.federation  = msgBuf.read_int32();
-       Header.bodySize    = msgBuf.read_int32();
-
-       D.Mes(pdDebug,'N',Header.type,"readHeader::");
-       // 2- (Pseudo) Parse Header(Static Part)
-       type       = Header.type       ;
-       exception  = Header.exception  ;
-       federate   = Header.federate   ;
-       federation = Header.federation ;
-
-       // If the message carry an exception, the Body will only contain the
-       // exception reason.
-       if (exception != e_NO_EXCEPTION)
-       {
-               G.Out(pdGendoc,"exit  Message::readHeader carrying an 
exception");
-               return true ;
-       }
-
-       // 2- Parse Header according to its type(Variable Part)
-       switch (Header.type) {
-       case MESSAGE_NULL:
-               Header.VP.time.date = msgBuf.read_double();
-               date = Header.VP.time.date ;
-               break ;
-
-       case REQUEST_FEDERATION_SAVE:
-               Header.VP.O_I.date = msgBuf.read_double();
-               date = Header.VP.O_I.date ;
-               break ;
-
-       case UPDATE_ATTRIBUTE_VALUES:
-       case REFLECT_ATTRIBUTE_VALUES:
-               Header.VP.O_I.handle = msgBuf.read_int32();
-               objectClass = Header.VP.O_I.handle ;
-               Header.VP.O_I.size   = msgBuf.read_int32();
-               handleArraySize = Header.VP.O_I.size ;
-               Header.VP.O_I.date = msgBuf.read_double();
-               date = Header.VP.O_I.date ;
-               break ;
-
-       case SEND_INTERACTION:
-       case RECEIVE_INTERACTION:
-               Header.VP.O_I.handle = msgBuf.read_int32();
-               interactionClass = Header.VP.O_I.handle ;
-               Header.VP.O_I.size   = msgBuf.read_int32();
-               handleArraySize = Header.VP.O_I.size ;
-               Header.VP.O_I.date = msgBuf.read_double();
-               date = Header.VP.O_I.date ;
-               break ;
-
-       case INITIATE_FEDERATE_SAVE:
-               Header.VP.O_I.date = msgBuf.read_double();
-               date = Header.VP.O_I.date ;
-               break ;
-
-       case REQUEST_OBJECT_ATTRIBUTE_VALUE_UPDATE:
-               Header.VP.O_I.size   = msgBuf.read_int32();
-               handleArraySize = Header.VP.O_I.size ;
-               break;
-
-       case REQUEST_FEDERATION_RESTORE:
-       case INITIATE_FEDERATE_RESTORE:
-       case REQUEST_FEDERATION_RESTORE_SUCCEEDED:
-       case REQUEST_FEDERATION_RESTORE_FAILED:
-       case CREATE_FEDERATION_EXECUTION:
-       case DESTROY_FEDERATION_EXECUTION:
-       case REGISTER_FEDERATION_SYNCHRONIZATION_POINT:
-       case SYNCHRONIZATION_POINT_ACHIEVED:
-       case SYNCHRONIZATION_POINT_REGISTRATION_SUCCEEDED:
-       case FEDERATION_SYNCHRONIZED:
-       case ANNOUNCE_SYNCHRONIZATION_POINT:
-       case DELETE_OBJECT:
-       case REMOVE_OBJECT:
-               Header.VP.O_I.date = msgBuf.read_double();
-               date = Header.VP.O_I.date;
-               break;
-       case CLOSE_CONNEXION:
-       case RESIGN_FEDERATION_EXECUTION:
-       case IS_ATTRIBUTE_OWNED_BY_FEDERATE:
-       case INFORM_ATTRIBUTE_OWNERSHIP:
-       case ATTRIBUTE_IS_NOT_OWNED:
-       case QUERY_ATTRIBUTE_OWNERSHIP:
-       case ATTRIBUTE_OWNERSHIP_ACQUISITION_IF_AVAILABLE:
-       case ATTRIBUTE_OWNERSHIP_ACQUISITION_NOTIFICATION:
-       case ATTRIBUTE_OWNERSHIP_UNAVAILABLE:
-       case NEGOTIATED_ATTRIBUTE_OWNERSHIP_DIVESTITURE:
-       case REQUEST_ATTRIBUTE_OWNERSHIP_ASSUMPTION:
-       case UNCONDITIONAL_ATTRIBUTE_OWNERSHIP_DIVESTITURE:
-       case ATTRIBUTE_OWNERSHIP_ACQUISITION:
-       case REQUEST_ATTRIBUTE_OWNERSHIP_RELEASE:
-       case ATTRIBUTE_OWNERSHIP_DIVESTITURE_NOTIFICATION:
-       case CANCEL_NEGOTIATED_ATTRIBUTE_OWNERSHIP_DIVESTITURE:
-       case ATTRIBUTE_OWNERSHIP_RELEASE_RESPONSE:
-       case CANCEL_ATTRIBUTE_OWNERSHIP_ACQUISITION:
-       case CONFIRM_ATTRIBUTE_OWNERSHIP_ACQUISITION_CANCELLATION:
-       case DDM_CREATE_REGION:
-       case FEDERATE_SAVE_BEGUN:
-       case FEDERATE_SAVE_COMPLETE:
-       case FEDERATE_SAVE_NOT_COMPLETE:
-       case FEDERATION_SAVED:
-       case FEDERATION_NOT_SAVED:
-       case FEDERATE_RESTORE_COMPLETE:
-       case FEDERATE_RESTORE_NOT_COMPLETE:
-       case FEDERATION_RESTORE_BEGUN:
-       case FEDERATION_RESTORED:
-       case FEDERATION_NOT_RESTORED:
-       case DDM_ASSOCIATE_REGION:
-       case DDM_UNASSOCIATE_REGION:
-       case DDM_SUBSCRIBE_ATTRIBUTES:
-       case DDM_UNSUBSCRIBE_ATTRIBUTES:
-       case DDM_SUBSCRIBE_INTERACTION:
-       case DDM_UNSUBSCRIBE_INTERACTION:
-       case DDM_REGISTER_OBJECT:
-       case GET_FED_FILE:
-               break ;
-
-       case SET_TIME_REGULATING:
-               Header.VP.time.date = msgBuf.read_double();
-               date = Header.VP.time.date ;
-               Header.VP.time.R_or_C = msgBuf.read_double();
-               regulator = Header.VP.time.R_or_C ;             
-               break ;
-
-       case SET_TIME_CONSTRAINED:
-               Header.VP.time.date = msgBuf.read_double();
-               date = Header.VP.time.date ;
-               Header.VP.time.R_or_C = msgBuf.read_double();
-               constrained = Header.VP.time.R_or_C ;
-               break ;
-
-       case CHANGE_ATTRIBUTE_TRANSPORT_TYPE:
-       case CHANGE_ATTRIBUTE_ORDER_TYPE:
-       case CHANGE_INTERACTION_TRANSPORT_TYPE:
-       case CHANGE_INTERACTION_ORDER_TYPE:
-               throw RTIinternalError("Read Message not implemented for T/O.");
-               break ;
-
-               // -- Join Variable Part(No body) --
-
-       case JOIN_FEDERATION_EXECUTION:
-               Header.VP.Join.NbReg = msgBuf.read_int32();
-               numberOfRegulators = Header.VP.Join.NbReg ;
-               Header.VP.Join.AdrMC = msgBuf.read_uint32();
-               multicastAddress = Header.VP.Join.AdrMC ;
-               Header.VP.Join.Addr = msgBuf.read_uint32();
-               bestEffortAddress = Header.VP.Join.Addr ;
-               Header.VP.Join.peer = msgBuf.read_uint32();
-               bestEffortPeer = Header.VP.Join.peer ;
-               break ;
-
-               // -- O_I Variable Part(No body) --
-
-       case UNPUBLISH_OBJECT_CLASS:
-       case UNSUBSCRIBE_OBJECT_CLASS:
-               Header.VP.O_I.handle = msgBuf.read_int32();
-               objectClass = Header.VP.O_I.handle ;
-               break ;
-
-       case PUBLISH_INTERACTION_CLASS:
-       case UNPUBLISH_INTERACTION_CLASS:
-       case SUBSCRIBE_INTERACTION_CLASS:
-       case UNSUBSCRIBE_INTERACTION_CLASS:
-       case TURN_INTERACTIONS_ON:
-       case TURN_INTERACTIONS_OFF:
-               Header.VP.O_I.handle = msgBuf.read_int32();
-               interactionClass = Header.VP.O_I.handle ;
-               break ;
-
-               // DDM variable part
-       case DDM_DELETE_REGION:
-               Header.VP.ddm.region = msgBuf.read_int32();
-               region = Header.VP.ddm.region ;
-               break ;
-
-               // -- O_I Variable Part(body not empty) --
-
-       case PUBLISH_OBJECT_CLASS:
-       case SUBSCRIBE_OBJECT_CLASS:
-               Header.VP.O_I.handle = msgBuf.read_int32();
-               objectClass = Header.VP.O_I.handle ;
-               Header.VP.O_I.size = msgBuf.read_int32();
-               handleArraySize = Header.VP.O_I.size ;
-               break ;
-
-       case REGISTER_OBJECT:
-       case DISCOVER_OBJECT:
-               Header.VP.O_I.handle = msgBuf.read_int32();
-               objectClass = Header.VP.O_I.handle ;
-               break ;
-
-       case DDM_MODIFY_REGION:
-               Header.VP.ddm.region = msgBuf.read_int32();
-               region = Header.VP.ddm.region ;
-               break ;
-
-               // -- Default Handler --
-
-       default:
-               D.Out(pdExcept, "Unknown type %d in ReadHeader.", Header.type);
-               G.Out(pdGendoc,"exit  NetworkMessage::readHeader with unknown 
type=%d",Header.type);
-               throw RTIinternalError("Received unknown Header type.");
-       }
-
-       // 4- If Header.bodySize is not 0, return RTI_TRUE, else RTI_FALSE
-       G.Out(pdGendoc,"exit  NetworkMessage::readHeader");
-       return Header.bodySize ;
-}
-
-// ----------------------------------------------------------------------------
-void
-NetworkMessage::writeBody(Socket *socket)
-{      
-       unsigned short i ;
-
-       G.Out(pdGendoc,"enter NetworkMessage::writeBody");
-
-       // If the message carry an exception, the Body will only contain the
-       // exception reason.
-       if (Header.exception != e_NO_EXCEPTION) {
-               msgBuf.write_string(exceptionReason);
-       }
-       else
-       {
-               D.Mes(pdDebug,'N',Header.type,"writeBody::");
-               // 1- Prepare body Structure according to Message type
-               switch(Header.type) {
-               case GET_FED_FILE:
-                       msgBuf.write_int16(number);                     
-                       writeFEDid();
-                       if ( number >= 1 )  // open (0) and close (0) no more 
information
-                       {
-                               msgBuf.write_int32(ValueArray[0].length);
-                               msgBuf.write_bytes(ValueArray[0].value, 
ValueArray[0].length);
-                       }
-                       break;
-
-               case UPDATE_ATTRIBUTE_VALUES:
-                       msgBuf.write_int32(object);
-                       msgBuf.write_string(label);
-                       msgBuf.write_int32(boolean);    // true means with time 
(stored in header)
-                       msgBuf.write_bytes((char *) handleArray, 
handleArraySize * sizeof(AttributeHandle));
-
-                       for (i = 0 ; i < handleArraySize ; i ++) {
-                               msgBuf.write_int32(ValueArray[i].length) ;
-                               msgBuf.write_bytes(ValueArray[i].value, 
ValueArray[i].length);
-                       }
-                       break ;
-
-               case REFLECT_ATTRIBUTE_VALUES:
-                       msgBuf.write_int32(object);
-                       msgBuf.write_string(label);
-                       msgBuf.write_int32(boolean);
-                       msgBuf.write_bytes((char *) handleArray, 
handleArraySize * sizeof(AttributeHandle));    
-                       for (i = 0 ; i < handleArraySize ; i ++) {
-                               msgBuf.write_int32(ValueArray[i].length) ;
-                               msgBuf.write_bytes(ValueArray[i].value, 
ValueArray[i].length);
-                       }
-                       break ;
-
-               case PROVIDE_ATTRIBUTE_VALUE_UPDATE:
-                       msgBuf.write_int32(object);
-                       for (i = 0 ; i < handleArraySize ; i ++) {
-                               msgBuf.write_int16(handleArray[i]);
-                       }
-                       break ;
-
-                       // -- O_I Variable Part With date(body Not Empty) --
-
-               case SEND_INTERACTION:
-               case RECEIVE_INTERACTION:
-                       msgBuf.write_string(label);
-                       msgBuf.write_int32(boolean);    // true means with time 
(stored in header)
-                       msgBuf.write_bytes((char *) handleArray,
-                                       handleArraySize * 
sizeof(AttributeHandle));
-                       for (i = 0 ; i < handleArraySize ; i ++) {
-                               msgBuf.write_int32(ValueArray[i].length);
-                               msgBuf.write_bytes(ValueArray[i].value, 
ValueArray[i].length);
-                       }
-                       msgBuf.write_int32(region);
-                       break ;
-
-               case REQUEST_OBJECT_ATTRIBUTE_VALUE_UPDATE:
-                       msgBuf.write_int32(object);
-                       for (i = 0 ; i < handleArraySize ; i ++) {
-                               msgBuf.write_int16(handleArray[i]) ;
-                       } 
-                       break;
-
-                       // -- No Variable Part --
-
-               case CREATE_FEDERATION_EXECUTION:
-                       writeFederationName();
-                       writeFEDid();
-                       break ;
-
-               case DESTROY_FEDERATION_EXECUTION:
-                       writeFederationName();
-                       break ;
-
-               case REGISTER_FEDERATION_SYNCHRONIZATION_POINT:
-                       msgBuf.write_string(label);
-                       msgBuf.write_string(tag);
-                       msgBuf.write_int32(boolean);
-                       // boolean true means we have an handleArray
-                       if ( boolean )
-                       {
-                               msgBuf.write_uint16(handleArraySize);
-                               for (i = 0 ; i < handleArraySize ; i ++) {
-                                       msgBuf.write_uint16(handleArray[i]);
-                               }
-                       }        
-                       break ;
-
-               case ANNOUNCE_SYNCHRONIZATION_POINT:
-                       msgBuf.write_string(label);
-                       msgBuf.write_string(tag);       
-                       break ;
-
-               case SYNCHRONIZATION_POINT_ACHIEVED:
-               case SYNCHRONIZATION_POINT_REGISTRATION_SUCCEEDED:
-               case FEDERATION_SYNCHRONIZED:
-               case REQUEST_FEDERATION_RESTORE:
-                       msgBuf.write_string(label);
-                       break ;
-
-               case REQUEST_FEDERATION_RESTORE_SUCCEEDED:
-                       msgBuf.write_string(label);
-                       G.Out(pdGendoc,"NetworkMessage::writeBody type R_F_R_S 
label=%s",label.c_str());
-                       break ;
-
-
-               case INITIATE_FEDERATE_RESTORE:
-                       msgBuf.write_string(label);
-                       break ;
-
-               case INITIATE_FEDERATE_SAVE:
-                       msgBuf.write_string(label);
-                       // boolean true means with time (in the header)
-                       msgBuf.write_int32(boolean);
-                       break ;
-
-               case REQUEST_FEDERATION_SAVE:
-                       msgBuf.write_string(label);
-                       // boolean true means with time (in the header)
-                       msgBuf.write_int32(boolean);
-                       break ;
-
-               case REQUEST_FEDERATION_RESTORE_FAILED:
-                       msgBuf.write_string(label);
-                       msgBuf.write_string(tag);
-                       break ;
-
-               case DELETE_OBJECT:
-               case REMOVE_OBJECT:
-                       msgBuf.write_int32(object);
-                       msgBuf.write_int32(boolean);    // true means with time 
(stored in header)
-                       msgBuf.write_string(label);
-                       break ;
-
-               case IS_ATTRIBUTE_OWNED_BY_FEDERATE:
-               case INFORM_ATTRIBUTE_OWNERSHIP:
-               case ATTRIBUTE_IS_NOT_OWNED:
-               case QUERY_ATTRIBUTE_OWNERSHIP:
-                       msgBuf.write_int32(object);
-                       msgBuf.write_int32(handleArray[0]);
-                       msgBuf.write_string(label);
-                       break ;
-
-               case NEGOTIATED_ATTRIBUTE_OWNERSHIP_DIVESTITURE:
-               case REQUEST_ATTRIBUTE_OWNERSHIP_ASSUMPTION:
-               case ATTRIBUTE_OWNERSHIP_ACQUISITION:
-               case REQUEST_ATTRIBUTE_OWNERSHIP_RELEASE:
-                       msgBuf.write_int32(object);
-                       msgBuf.write_int32(handleArraySize);
-                       for (i = 0 ; i < handleArraySize ; i ++)
-                               msgBuf.write_int32(handleArray[i]);
-                       msgBuf.write_string(label);
-                       break ;
-
-
-               case ATTRIBUTE_OWNERSHIP_ACQUISITION_IF_AVAILABLE:
-               case ATTRIBUTE_OWNERSHIP_ACQUISITION_NOTIFICATION:
-               case ATTRIBUTE_OWNERSHIP_UNAVAILABLE:
-               case UNCONDITIONAL_ATTRIBUTE_OWNERSHIP_DIVESTITURE:
-               case ATTRIBUTE_OWNERSHIP_DIVESTITURE_NOTIFICATION:
-               case CANCEL_NEGOTIATED_ATTRIBUTE_OWNERSHIP_DIVESTITURE:
-               case ATTRIBUTE_OWNERSHIP_RELEASE_RESPONSE:
-               case CANCEL_ATTRIBUTE_OWNERSHIP_ACQUISITION:
-               case CONFIRM_ATTRIBUTE_OWNERSHIP_ACQUISITION_CANCELLATION:
-                       msgBuf.write_int32(object);
-                       msgBuf.write_int32(handleArraySize);
-                       for (i = 0 ; i < handleArraySize ; i ++)
-                               msgBuf.write_int32(handleArray[i]);
-                       break ;
-
-               case DDM_CREATE_REGION:
-                       msgBuf.write_int32(space);
-                       msgBuf.write_int32(nbExtents);
-                       msgBuf.write_int32(region);
-                       break ;
-
-                       // -- Join Variable Part --
-
-               case JOIN_FEDERATION_EXECUTION:
-                       writeFederationName();
-                       msgBuf.write_string(federateName);
-                       break ;
-
-                       // -- O_I Variable Part(body not empty) --
-
-               case PUBLISH_OBJECT_CLASS:
-               case SUBSCRIBE_OBJECT_CLASS:
-                       for (i = 0 ; i < handleArraySize ; i ++)
-                               msgBuf.write_int32(handleArray[i]);
-                       break ;
-
-               case REGISTER_OBJECT:
-               case DISCOVER_OBJECT:
-                       msgBuf.write_int32(object);
-                       msgBuf.write_string(label);
-                       break ;
-
-               case DDM_MODIFY_REGION:
-                       writeExtents();
-                       break ;
-
-               case DDM_ASSOCIATE_REGION:
-                       msgBuf.write_int32(object);
-                       msgBuf.write_int32(region);
-                       msgBuf.write_int32(boolean);
-                       msgBuf.write_int32(handleArraySize);
-                       for (i = 0 ; i < handleArraySize ; i ++)
-                               msgBuf.write_int32(handleArray[i]);
-                       break ;
-
-               case DDM_SUBSCRIBE_ATTRIBUTES:
-                       msgBuf.write_int32(objectClass);
-                       msgBuf.write_int32(region);
-                       msgBuf.write_int32(boolean);
-                       msgBuf.write_int32(handleArraySize);
-                       for (i = 0 ; i < handleArraySize ; i ++)
-                               msgBuf.write_int32(handleArray[i]);
-                       break ;
-
-               case DDM_UNASSOCIATE_REGION:
-                       msgBuf.write_int32(object);
-                       msgBuf.write_int32(region);
-                       break ;
-
-               case DDM_UNSUBSCRIBE_ATTRIBUTES:
-                       msgBuf.write_int32(objectClass);
-                       msgBuf.write_int32(region);
-                       break ;
-
-               case DDM_SUBSCRIBE_INTERACTION:
-               case DDM_UNSUBSCRIBE_INTERACTION:
-                       msgBuf.write_int32(interactionClass);
-                       msgBuf.write_int32(region);
-                       msgBuf.write_int32(boolean);
-                       break ;
-
-               case DDM_REGISTER_OBJECT:
-                       msgBuf.write_int32(objectClass);
-                       msgBuf.write_int32(object);
-                       msgBuf.write_int32(region);
-                       msgBuf.write_string(tag);
-                       msgBuf.write_int32(handleArraySize);
-                       for (i = 0 ; i < handleArraySize ; i ++)
-                               msgBuf.write_int32(handleArray[i]);
-                       break ;
-
-                       // -- Default Handler --
-               default:
-                       D.Out(pdExcept, "Unknown type %d in Writebody.", 
Header.type);
-                       throw RTIinternalError("Unknown/Unimplemented type for 
Header.");
-               }
-       }
-
-       msgBuf.updateReservedBytes();
-       D.Out(pdDebug,"[Body] Sending a buffer of <%u> bytes",msgBuf.size());
-       msgBuf.show(msgBuf(0),5);
-       fflush(stdout);
-       socket->send(static_cast<unsigned char*>(msgBuf(0)), msgBuf.size());
-
-       G.Out(pdGendoc,"exit  NetworkMessage::writeBody");
-}
-
 void NetworkMessage::serialize() {
        G.Out(pdGendoc,"enter NetworkMessage::serialize");
        /* We serialize the common Network messages part 
         * ALL Network Message will contain the following
         */     
-       D.Out(pdDebug,("serialize"+getName()).c_str());
+       D.Out(pdDebug, "serialize <%s>", getName().c_str());
        /* type of message */
        msgBuf.write_int32(type);
        msgBuf.write_int32(exception);
@@ -844,7 +66,8 @@
        /* We serialize the common Network message part 
         * ALL Network Messages will contain the following
         */     
-       D.Out(pdDebug,("deserialize"+getName()).c_str());       
+       D[pdDebug] << "deserialize <" << getName().c_str()<<">"<<endl;
+       D.Out(pdDebug, "deserialize <%s>", getName().c_str());
        /* deserialize common part */
        type        = 
static_cast<certi::NetworkMessage::Type>(msgBuf.read_int32());
        exception   = static_cast<certi::TypeException>(msgBuf.read_int32());
@@ -878,7 +101,7 @@
        /* 2- update message buffer 'reserved bytes' header */
        msgBuf.updateReservedBytes();
        D.Out(pdDebug,"[Header] Sending a buffer of <%u> bytes",msgBuf.size());
-       msgBuf.show(msgBuf(0),5);
+       //msgBuf.show(msgBuf(0),5);
        /* 3- effectively send the raw message to socket */
        socket->send(static_cast<unsigned char*>(msgBuf(0)), msgBuf.size());
        G.Out(pdGendoc,"exit  NetworkMessage::send");
@@ -890,7 +113,7 @@
        /* 1- Read 'reserved bytes' header from socket */
        D.Out(pdDebug,"reading %d bytes for header",msgBuf.reservedBytes);
        socket->receive(msgBuf(0), msgBuf.reservedBytes);       
-       msgBuf.show(msgBuf(0),5);
+       //msgBuf.show(msgBuf(0),5);
        fflush(stdout);
        /* 2- update (assume) complete message size from reserved bytes */
        msgBuf.assumeSizeFromReservedBytes();
@@ -904,323 +127,7 @@
        deserialize();
        G.Out(pdGendoc,"exit  NetworkMessage::receive");        
 } /* end of receive */
-// ----------------------------------------------------------------------------
-bool
-NetworkMessage::writeHeader(Socket *socket)
-{
-       G.Out(pdGendoc,"enter NetworkMessage::writeHeader");
-       // 2- Fill Header(Static Part)
-       Header.type = type ;
-       msgBuf.write_int32(Header.type);
-       D.Mes(pdDebug,'N',Header.type,"writeHeader::");
-
-       Header.exception = exception ;
-       msgBuf.write_int32(Header.exception);
-
-       Header.federate = federate ;
-       msgBuf.write_int32(Header.federate);
-
-       Header.federation = federation ;
-       msgBuf.write_int32(Header.federation);
-
-       // If the message carry an exception, the Body will only contain the
-       // exception reason.
-       if (exception != e_NO_EXCEPTION) {
-               Header.bodySize = 1;
-               msgBuf.write_int32(Header.bodySize);
-               G.Out(pdGendoc,"exit  NetworkMessage::writeHeader carrying an 
exception");
-               return true ;
-       }
-
-       // 3- Fill Header(Variable Part)[Sorted by Variable part type]
-       // Note: Header.bodySize is not set to the actual body size, but
-       // to zero to indicate there is no body, or 1 if a body is needed.
-       switch(type) {
-       case MESSAGE_NULL:
-               Header.bodySize = 0 ;
-               msgBuf.write_int32(Header.bodySize);
-
-               Header.VP.time.date = date ;
-               msgBuf.write_double(date);
-               break ;
-
-       case UPDATE_ATTRIBUTE_VALUES:
-       case REFLECT_ATTRIBUTE_VALUES:
-               Header.bodySize = 1 ;
-               msgBuf.write_int32(Header.bodySize);
-
-               Header.VP.O_I.handle = objectClass ;
-               msgBuf.write_int32(objectClass);
-               Header.VP.O_I.size = handleArraySize ;
-               msgBuf.write_int32(handleArraySize);
-               Header.VP.O_I.date = date ;
-               msgBuf.write_double(date);
-               break ;
-
-       case SEND_INTERACTION:
-       case RECEIVE_INTERACTION:
-               // body contains handleArray, ValueArray, label.
-               Header.bodySize = 1 ;
-               msgBuf.write_int32(Header.bodySize);
-
-               Header.VP.O_I.handle = interactionClass ;
-               msgBuf.write_int32(interactionClass);
-               Header.VP.O_I.size = handleArraySize ;
-               msgBuf.write_int32(handleArraySize);
-               Header.VP.O_I.date = date ;
-               msgBuf.write_double(date);
-               break ;
-
-       case REQUEST_FEDERATION_SAVE:
-       case INITIATE_FEDERATE_SAVE:
-               Header.bodySize = 1 ;
-               msgBuf.write_int32(Header.bodySize);
-               // boolean true means with time
-               if (boolean) {
-                       Header.VP.O_I.date = date ;
-                       msgBuf.write_double(date);
-               }
-               break ;
-
-       case REQUEST_FEDERATION_RESTORE:
-       case REQUEST_FEDERATION_RESTORE_SUCCEEDED:
-       case REQUEST_FEDERATION_RESTORE_FAILED:
-               Header.bodySize = 1 ;
-               msgBuf.write_int32(Header.bodySize);
-               break ;
-
-               // Body contains Object handle,handleArray
-       case REQUEST_OBJECT_ATTRIBUTE_VALUE_UPDATE:
-               Header.bodySize = 1 ;
-               msgBuf.write_int32(Header.bodySize);
-
-               Header.VP.O_I.size = handleArraySize ;
-               msgBuf.write_int32(handleArraySize);
-               break;
-
-               // -- No Variable Part, No body --
-
-       case CLOSE_CONNEXION:
-       case RESIGN_FEDERATION_EXECUTION:
-       case FEDERATE_SAVE_BEGUN:
-       case FEDERATE_SAVE_COMPLETE:
-       case FEDERATE_SAVE_NOT_COMPLETE:
-       case FEDERATION_SAVED:
-       case FEDERATION_NOT_SAVED:
-       case FEDERATE_RESTORE_COMPLETE:
-       case FEDERATE_RESTORE_NOT_COMPLETE:
-       case FEDERATION_RESTORE_BEGUN:
-       case FEDERATION_RESTORED:
-       case FEDERATION_NOT_RESTORED:
-               Header.bodySize = 0 ;
-               msgBuf.write_int32(Header.bodySize);
-               break ;
-
-               // -- No Variable Part, body not empty --
-
-       case CREATE_FEDERATION_EXECUTION:
-       case DESTROY_FEDERATION_EXECUTION:
-
-               // body Contains federationName.
-               Header.bodySize = 1 ;
-               msgBuf.write_int32(Header.bodySize);
-               Header.VP.O_I.date = date ;
-               msgBuf.write_double(date);          
-               break;
-
-       case INFORM_ATTRIBUTE_OWNERSHIP:
-       case ATTRIBUTE_IS_NOT_OWNED:
-       case IS_ATTRIBUTE_OWNED_BY_FEDERATE:
-       case QUERY_ATTRIBUTE_OWNERSHIP:
-               // body Contains ObjectHandle and label
-       case ATTRIBUTE_OWNERSHIP_ACQUISITION_IF_AVAILABLE:
-       case ATTRIBUTE_OWNERSHIP_ACQUISITION_NOTIFICATION:
-       case ATTRIBUTE_OWNERSHIP_UNAVAILABLE:
-               // body Contains ObjectHandle and handleArray
-       case NEGOTIATED_ATTRIBUTE_OWNERSHIP_DIVESTITURE:
-       case REQUEST_ATTRIBUTE_OWNERSHIP_ASSUMPTION:
-       case UNCONDITIONAL_ATTRIBUTE_OWNERSHIP_DIVESTITURE:
-       case ATTRIBUTE_OWNERSHIP_ACQUISITION:
-       case REQUEST_ATTRIBUTE_OWNERSHIP_RELEASE:
-       case ATTRIBUTE_OWNERSHIP_DIVESTITURE_NOTIFICATION:
-       case CANCEL_NEGOTIATED_ATTRIBUTE_OWNERSHIP_DIVESTITURE:
-       case ATTRIBUTE_OWNERSHIP_RELEASE_RESPONSE:
-       case CANCEL_ATTRIBUTE_OWNERSHIP_ACQUISITION:
-       case CONFIRM_ATTRIBUTE_OWNERSHIP_ACQUISITION_CANCELLATION:
-       case DDM_CREATE_REGION:
-       case INITIATE_FEDERATE_RESTORE:
-       case DDM_ASSOCIATE_REGION:
-       case DDM_UNASSOCIATE_REGION:
-       case DDM_SUBSCRIBE_ATTRIBUTES:
-       case DDM_UNSUBSCRIBE_ATTRIBUTES:
-       case DDM_SUBSCRIBE_INTERACTION:
-       case DDM_UNSUBSCRIBE_INTERACTION:       
-       case DDM_REGISTER_OBJECT:
-       case GET_FED_FILE:
-               Header.bodySize = 1 ;
-               msgBuf.write_int32(Header.bodySize);
-
-               break ;
-
-       case REGISTER_FEDERATION_SYNCHRONIZATION_POINT:
-       case SYNCHRONIZATION_POINT_ACHIEVED:
-       case SYNCHRONIZATION_POINT_REGISTRATION_SUCCEEDED:
-       case FEDERATION_SYNCHRONIZED:
-       case ANNOUNCE_SYNCHRONIZATION_POINT:
-               // body Contains Label(should be non-empty)
-               // BUG: S'il fait moins de 16 octet, il passe dans le header.
-               Header.bodySize = 1 ;
-               msgBuf.write_int32(Header.bodySize);
-               break ;
-
-       case DELETE_OBJECT:
-               Header.bodySize = 1;
-               msgBuf.write_int32(Header.bodySize);
-
-               Header.VP.O_I.date = date;
-               msgBuf.write_double(date);
-               break;
-       case REMOVE_OBJECT:
-               // body Contains ObjectHandle, and label
-               Header.bodySize = 1 ;
-               msgBuf.write_int32(Header.bodySize);
-               if (boolean) {
-                       Header.VP.O_I.date = date ;
-                       msgBuf.write_double(date);
-               }
-               break;
-
-               // -- time Variable Part(No body)[Continued] --
-       case SET_TIME_REGULATING:
-               Header.bodySize = 0 ;
-               msgBuf.write_int32(Header.bodySize);
-               Header.VP.time.date = date ;
-               msgBuf.write_double(date);
-               Header.VP.time.R_or_C = regulator ;
-               msgBuf.write_double(Header.VP.time.R_or_C);
-               break ;
-
-       case SET_TIME_CONSTRAINED:
-               Header.bodySize = 0 ;
-               msgBuf.write_int32(Header.bodySize);
-               Header.VP.time.date = date ;
-               msgBuf.write_double(date);
-               Header.VP.time.R_or_C = constrained ;
-               msgBuf.write_double(Header.VP.time.R_or_C);
-               break ;
-
-               // -- T_O Variable Part --
-
-       case CHANGE_ATTRIBUTE_TRANSPORT_TYPE:
-       case CHANGE_ATTRIBUTE_ORDER_TYPE:
-       case CHANGE_INTERACTION_TRANSPORT_TYPE:
-       case CHANGE_INTERACTION_ORDER_TYPE:
-               throw RTIinternalError("Write Message not implemented for 
T/O.");
-               break ;
-
-               // -- Join Variable Part --
-
-       case JOIN_FEDERATION_EXECUTION:
-               // body contains federationName and federateName
-               Header.bodySize = 1 ;
-               msgBuf.write_int32(Header.bodySize);
-               Header.VP.Join.NbReg = numberOfRegulators ;
-               msgBuf.write_int32(numberOfRegulators);
-               Header.VP.Join.AdrMC = multicastAddress ;
-               msgBuf.write_uint32(multicastAddress);
-               Header.VP.Join.Addr = bestEffortAddress ;
-               msgBuf.write_uint32(bestEffortAddress);
-               Header.VP.Join.peer = bestEffortPeer ;
-               msgBuf.write_uint32(bestEffortPeer);
-               break ;
-
-               // -- O_I Variable Part(No body) --
-
-       case UNPUBLISH_OBJECT_CLASS:
-       case UNSUBSCRIBE_OBJECT_CLASS:
-               Header.bodySize = 0 ;
-               msgBuf.write_int32(Header.bodySize);
-               Header.VP.O_I.handle = objectClass ;
-               msgBuf.write_int32(objectClass);
-               break ;
-
-       case PUBLISH_INTERACTION_CLASS:
-       case UNPUBLISH_INTERACTION_CLASS:
-       case SUBSCRIBE_INTERACTION_CLASS:
-       case UNSUBSCRIBE_INTERACTION_CLASS:
-       case TURN_INTERACTIONS_ON:
-       case TURN_INTERACTIONS_OFF:
-               Header.bodySize = 0 ;
-               msgBuf.write_int32(Header.bodySize);
-               Header.VP.O_I.handle = interactionClass ;
-               msgBuf.write_int32(interactionClass);
-               break ;
-
-               // DDM variable part, no body
-       case DDM_DELETE_REGION:
-               Header.bodySize = 0 ;
-               msgBuf.write_int32(Header.bodySize);
-               Header.VP.ddm.region = region ;
-               msgBuf.write_int32(region);
-               break ;
-
-               // -- O_I Variable Part(body not empty) --
-
-       case PUBLISH_OBJECT_CLASS:
-       case SUBSCRIBE_OBJECT_CLASS:
-               // body contains handleArray[handleArraySize](if not empty)
-
-               if (handleArraySize > 0) {
-                       Header.bodySize = 1 ;
-               }
-               else {
-                       Header.bodySize = 0 ;
-               }
-               msgBuf.write_int32(Header.bodySize);
-
-               Header.VP.O_I.handle = objectClass ;
-               msgBuf.write_int32(objectClass);
-               Header.VP.O_I.size = handleArraySize ;
-               msgBuf.write_int32(handleArraySize);
-               break ;
-
-       case REGISTER_OBJECT:
-       case DISCOVER_OBJECT:
-               // body Contains ObjectHandle and label
-               Header.bodySize = 1 ;
-               msgBuf.write_int32(Header.bodySize);
-               Header.VP.O_I.handle = objectClass ;
-               msgBuf.write_int32(objectClass);
-               break ;
-
-       case DDM_MODIFY_REGION:
-               Header.bodySize = 1 ;
-               msgBuf.write_int32(Header.bodySize);
-               Header.VP.ddm.region = region ;
-               msgBuf.write_int32(region);
-               break ;
-
-       default:
-               D.Out(pdExcept, "Unknown type %d in WriteHeader.", Header.type);
-               throw RTIinternalError("Unknown/Unimplemented type for 
Header.");
-       }
-
-       /* 
-        * If the message has no body we send the prepared header buffer 
-        * Note that we may pass msgBuf object to send because it will be 
casted out
-        * by the MessageBuffer Cast operator.     
-        */
-       if (Header.bodySize == 0) {
-               msgBuf.updateReservedBytes();
-               D.Out(pdDebug,"[Header] Sending a buffer of <%u> 
bytes",msgBuf.size());
-               msgBuf.show(msgBuf(0),5);
-               socket->send(static_cast<unsigned char*>(msgBuf(0)), 
msgBuf.size());
-       }
-
-       G.Out(pdGendoc,"exit  NetworkMessage::writeHeader");
-       return (Header.bodySize != 0);
-}
 
 } // namespace certi
 
-// $Id: NetworkMessage_RW.cc,v 3.45.2.3 2008/04/09 08:43:46 erk Exp $
+// $Id: NetworkMessage_RW.cc,v 3.45.2.4 2008/04/09 14:16:32 erk Exp $

Index: libCERTI/NetworkMessage.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/NetworkMessage.cc,v
retrieving revision 3.28.2.3
retrieving revision 3.28.2.4
diff -u -b -r3.28.2.3 -r3.28.2.4
--- libCERTI/NetworkMessage.cc  9 Apr 2008 10:34:03 -0000       3.28.2.3
+++ libCERTI/NetworkMessage.cc  9 Apr 2008 14:16:32 -0000       3.28.2.4
@@ -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.3 2008/04/09 10:34:03 erk Exp $
+// $Id: NetworkMessage.cc,v 3.28.2.4 2008/04/09 14:16:32 erk Exp $
 // ----------------------------------------------------------------------------
 
 
@@ -37,8 +37,8 @@
 NetworkMessage::NetworkMessage()
     : type(NOT_USED), exception(e_NO_EXCEPTION), isDated(false), 
isLabelled(false), isTagged(false)
 {
+       name = "NetworkMessage";
     exceptionReason[0] = '\0' ;
-
     number = 0 ;
 
     federation = 0 ;
@@ -52,9 +52,6 @@
     bestEffortPeer = -1 ;
     bestEffortAddress = 0 ;
 
-    // Clear Header
-    memset((void *) &Header, '\0', sizeof(Header));
-
     date = 0.0 ;
 
     object = 0 ;
@@ -214,12 +211,7 @@
 NetworkMessage::read(Socket *socket)
     throw (NetworkError, NetworkSignal)
 {
-    // G.Out(pdGendoc,"enter NetworkMessage::read");
-    bool has_body = readHeader(socket);
-
-    if (has_body)
-        readBody(socket);
-    // G.Out(pdGendoc,"exit  NetworkMessage::read");
+    receive(socket);
 }
 
 // ----------------------------------------------------------------------------
@@ -227,10 +219,7 @@
 NetworkMessage::write(Socket *socket)
     throw (NetworkError, NetworkSignal)
 {
-    bool needs_body = writeHeader(socket);
-
-    if (needs_body)
-        writeBody(socket);
+    send(socket);
 }
 
 // ----------------------------------------------------------------------------
@@ -254,67 +243,7 @@
     boolean = the_bool ;
 }
 
-// ----------------------------------------------------------------------------
-void
-NetworkMessage::readLabel()
-{
-    label = msgBuf.read_string();
-}
-
-// ----------------------------------------------------------------------------
-//! Read the tag contained into the message.
-void NetworkMessage::readTag()
-{
-    tag = msgBuf.read_string();
-}
-
-// ----------------------------------------------------------------------------
-//! Read the federation name.
-void
-NetworkMessage::readFederationName()
-{ 
-    federationName = msgBuf.read_string();
-}
-
-// ----------------------------------------------------------------------------
-void
-NetworkMessage::readFederateName()
-{
-    federateName = msgBuf.read_string();
-}
-
-// ----------------------------------------------------------------------------
-// setFEDid
-//
-void
-NetworkMessage::setFEDid(const char *NewFEDid)
-{
-    assert ( NewFEDid != NULL) ;
-    FEDid = std::string(NewFEDid);  
-}
-
-// ----------------------------------------------------------------------------
-void
-NetworkMessage::readFEDid()
-{ 
-    FEDid = msgBuf.read_string();    
-}
-
-// ---------------------------------------------------------------
-void
-NetworkMessage::writeFEDid()
-{    
-    msgBuf.write_string(FEDid);
-}
-
-// ---------------------------------------------------------------
-void
-NetworkMessage::writeFederationName()
-{ 
-    assert(federationName.length() > 0) ;      
-    msgBuf.write_string(federationName);
-}
 
 } // namespace certi
 
-// $Id: NetworkMessage.cc,v 3.28.2.3 2008/04/09 10:34:03 erk Exp $
+// $Id: NetworkMessage.cc,v 3.28.2.4 2008/04/09 14:16:32 erk Exp $

Index: libCERTI/NM_Classes.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/Attic/NM_Classes.cc,v
retrieving revision 1.1.2.5
retrieving revision 1.1.2.6
diff -u -b -r1.1.2.5 -r1.1.2.6
--- libCERTI/NM_Classes.cc      9 Apr 2008 10:34:03 -0000       1.1.2.5
+++ libCERTI/NM_Classes.cc      9 Apr 2008 14:16:33 -0000       1.1.2.6
@@ -287,8 +287,23 @@
        default:
                throw RTIinternalError("Unknown/Unimplemented message Type");
        }
+       
+       return msg;
 } /* end of NM_Factory::create */
 
+NetworkMessage* NM_Factory::receive(Socket* socket) throw (RTIinternalError) {
+       NetworkMessage  msgGen;
+       NetworkMessage* msg;
+       
+       /* receive generic message */
+       msgGen.receive(socket);
+       /* create specific message from type */
+       msg = NM_Factory::create(msgGen.getType());
+       msg->copyMsgBufFrom(msgGen);    
+       msg->deserialize();
+       return msg;     
+} /* end of NM_Factory::receive */
+
 NM_WithHandleArray::NM_WithHandleArray() {
        this->name = "NM_WithHandleArray";
        this->type = NetworkMessage::NOT_USED;
@@ -331,6 +346,21 @@
        }
 } /* end of deserialize */
 
+NM_DDM_Base::NM_DDM_Base() {
+       this->name = "NM_DDM_Base";
+       this->type = NetworkMessage::NOT_USED;
+       /* specific field init */
+       this->space       = 0;
+       this->nbExtents   = 0;
+       this->region      = 0;
+       this->object      = 0;
+       this->objectClass = 0;
+       this->boolean     = false;
+}
+
+NM_DDM_Base::~NM_DDM_Base() {
+}
+
 /*<BEGIN>---------- Not_Used ------------<BEGIN>*/
 NM_Not_Used::NM_Not_Used() {
        this->name = "NOT_USED";
@@ -1321,13 +1351,19 @@
 }
 void NM_DDM_Create_Region::serialize() {
        /* call mother class */      
-       Super::serialize(); 
+       NetworkMessage::serialize(); 
        /* specific code (if any) goes here */
+       msgBuf.write_int32(space);
+       msgBuf.write_int32(nbExtents);
+       msgBuf.write_int32(region);
 } /* end of serialize */ 
 void NM_DDM_Create_Region::deserialize() {
        /* call mother class */      
-       Super::deserialize(); 
+       NetworkMessage::deserialize(); 
        /* specific code (if any) goes here */
+       space     = msgBuf.read_int32();
+       nbExtents = msgBuf.read_int32();
+       region    = msgBuf.read_int32();
 } /* end of deserialize */
 /*<END>---------- DDM_Create_Region ------------<END>*/
 
@@ -1341,13 +1377,17 @@
 }
 void NM_DDM_Modify_Region::serialize() {
        /* call mother class */      
-       Super::serialize(); 
+       NetworkMessage::serialize(); 
        /* specific code (if any) goes here */
+       msgBuf.write_int32(region);
+       writeExtents();
 } /* end of serialize */ 
 void NM_DDM_Modify_Region::deserialize() {
        /* call mother class */      
-       Super::deserialize(); 
+       NetworkMessage::deserialize(); 
        /* specific code (if any) goes here */
+       region = msgBuf.read_int32();
+       readExtents();
 } /* end of deserialize */
 /*<END>---------- DDM_Modify_Region ------------<END>*/
 
@@ -1361,13 +1401,15 @@
 }
 void NM_DDM_Delete_Region::serialize() {
        /* call mother class */      
-       Super::serialize(); 
+       NetworkMessage::serialize(); 
        /* specific code (if any) goes here */
+       msgBuf.write_int32(region);
 } /* end of serialize */ 
 void NM_DDM_Delete_Region::deserialize() {
        /* call mother class */      
-       Super::deserialize(); 
+       NetworkMessage::deserialize(); 
        /* specific code (if any) goes here */
+       region = msgBuf.read_int32();
 } /* end of deserialize */
 /*<END>---------- DDM_Delete_Region ------------<END>*/
 
@@ -1381,13 +1423,21 @@
 }
 void NM_DDM_Associate_Region::serialize() {
        /* call mother class */      
-       Super::serialize(); 
+       NetworkMessage::deserialize();
+       NM_WithHandleArray::deserialize();
        /* specific code (if any) goes here */
+       msgBuf.write_int32(object);
+       msgBuf.write_int32(region);
+       msgBuf.write_int32(boolean);
 } /* end of serialize */ 
 void NM_DDM_Associate_Region::deserialize() {
        /* call mother class */      
-       Super::deserialize(); 
+       NetworkMessage::deserialize();
+       NM_WithHandleArray::deserialize();
        /* specific code (if any) goes here */
+       object  = msgBuf.read_int32();
+       region  = msgBuf.read_int32();
+       boolean = msgBuf.read_int32();
 } /* end of deserialize */
 /*<END>---------- DDM_Associate_Region ------------<END>*/
 
@@ -1396,18 +1446,29 @@
        this->name = "DDM_REGISTER_OBJECT";
        this->type = NetworkMessage::DDM_REGISTER_OBJECT;
        /* specific field init */
+       isTagged = true;
 }
 NM_DDM_Register_Object::~NM_DDM_Register_Object() {
 }
 void NM_DDM_Register_Object::serialize() {
        /* call mother class */      
-       Super::serialize(); 
+       NetworkMessage::deserialize();
+       NM_WithHandleArray::deserialize();
        /* specific code (if any) goes here */
+       msgBuf.write_int32(object);
+       msgBuf.write_int32(objectClass);
+       msgBuf.write_int32(region);
+       msgBuf.write_int32(boolean);
 } /* end of serialize */ 
 void NM_DDM_Register_Object::deserialize() {
        /* call mother class */      
-       Super::deserialize(); 
+       NetworkMessage::deserialize();
+       NM_WithHandleArray::deserialize();
        /* specific code (if any) goes here */
+       object      = msgBuf.read_int32();
+       objectClass = msgBuf.read_int32();
+       region = msgBuf.read_int32();
+       boolean = msgBuf.read_int32();
 } /* end of deserialize */
 /*<END>---------- DDM_Register_Object ------------<END>*/
 
@@ -1421,13 +1482,17 @@
 }
 void NM_DDM_Unassociate_Region::serialize() {
        /* call mother class */      
-       Super::serialize(); 
+       NetworkMessage::serialize();
        /* specific code (if any) goes here */
+       msgBuf.write_int32(object);
+       msgBuf.write_int32(region);
 } /* end of serialize */ 
 void NM_DDM_Unassociate_Region::deserialize() {
        /* call mother class */      
-       Super::deserialize(); 
+       NetworkMessage::deserialize();
        /* specific code (if any) goes here */
+       object = msgBuf.read_int32();
+       region = msgBuf.read_int32();
 } /* end of deserialize */
 /*<END>---------- DDM_Unassociate_Region ------------<END>*/
 
@@ -1441,13 +1506,21 @@
 }
 void NM_DDM_Subscribe_Attributes::serialize() {
        /* call mother class */      
-       Super::serialize(); 
+       NetworkMessage::deserialize();
+       NM_WithHandleArray::deserialize();
        /* specific code (if any) goes here */
+       msgBuf.write_int32(objectClass);
+       msgBuf.write_int32(region);
+       msgBuf.write_int32(boolean);
 } /* end of serialize */ 
 void NM_DDM_Subscribe_Attributes::deserialize() {
        /* call mother class */      
-       Super::deserialize(); 
+       NetworkMessage::deserialize();
+       NM_WithHandleArray::deserialize();
        /* specific code (if any) goes here */
+       objectClass = msgBuf.read_int32();
+       region      = msgBuf.read_int32();
+       boolean     = msgBuf.read_int32();
 } /* end of deserialize */
 /*<END>---------- DDM_Subscribe_Attributes ------------<END>*/
 
@@ -1461,13 +1534,17 @@
 }
 void NM_DDM_Unsubscribe_Attributes::serialize() {
        /* call mother class */      
-       Super::serialize(); 
+       NetworkMessage::serialize();
        /* specific code (if any) goes here */
+       msgBuf.write_int32(objectClass);
+       msgBuf.write_int32(region);
 } /* end of serialize */ 
 void NM_DDM_Unsubscribe_Attributes::deserialize() {
        /* call mother class */      
-       Super::deserialize(); 
+       NetworkMessage::deserialize();
        /* specific code (if any) goes here */
+       objectClass = msgBuf.read_int32();
+       region = msgBuf.read_int32();
 } /* end of deserialize */
 /*<END>---------- DDM_Unsubscribe_Attributes ------------<END>*/
 
@@ -1481,13 +1558,19 @@
 }
 void NM_DDM_Subscribe_Interaction::serialize() {
        /* call mother class */      
-       Super::serialize(); 
+       NetworkMessage::serialize();
        /* specific code (if any) goes here */
+       msgBuf.write_int32(interactionClass);
+       msgBuf.write_int32(region);
+       msgBuf.write_bool(boolean);
 } /* end of serialize */ 
 void NM_DDM_Subscribe_Interaction::deserialize() {
        /* call mother class */      
-       Super::deserialize(); 
+       NetworkMessage::deserialize();
        /* specific code (if any) goes here */
+       interactionClass = msgBuf.read_int32();
+       region           = msgBuf.read_int32();
+       boolean           = msgBuf.read_bool();
 } /* end of deserialize */
 /*<END>---------- DDM_Subscribe_Interaction ------------<END>*/
 
@@ -1499,16 +1582,6 @@
 }
 NM_DDM_Unsubscribe_Interaction::~NM_DDM_Unsubscribe_Interaction() {
 }
-void NM_DDM_Unsubscribe_Interaction::serialize() {
-       /* call mother class */      
-       Super::serialize(); 
-       /* specific code (if any) goes here */
-} /* end of serialize */ 
-void NM_DDM_Unsubscribe_Interaction::deserialize() {
-       /* call mother class */      
-       Super::deserialize(); 
-       /* specific code (if any) goes here */
-} /* end of deserialize */
 /*<END>---------- DDM_Unsubscribe_Interaction ------------<END>*/
 
 /*<BEGIN>---------- Provide_Attribute_Value_Update ------------<BEGIN>*/

Index: RTIG/RTIG.cc
===================================================================
RCS file: /sources/certi/certi/RTIG/RTIG.cc,v
retrieving revision 3.36.2.1
retrieving revision 3.36.2.2
diff -u -b -r3.36.2.1 -r3.36.2.2
--- RTIG/RTIG.cc        18 Mar 2008 15:55:58 -0000      3.36.2.1
+++ RTIG/RTIG.cc        9 Apr 2008 14:16:33 -0000       3.36.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: RTIG.cc,v 3.36.2.1 2008/03/18 15:55:58 erk Exp $
+// $Id: RTIG.cc,v 3.36.2.2 2008/04/09 14:16:33 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
 #include "RTIG.hh"
 
 #include "PrettyDebug.hh"
+#include "NM_Classes.hh"
 
 #ifdef _WIN32
 #include <signal.h>
@@ -504,7 +505,7 @@
 Socket*
 RTIG::processIncomingMessage(Socket *link)
 {
-    NetworkMessage msg ;
+    NetworkMessage* msg ;
     NetworkMessage rep ; // Server Answer(only if an exception is raised)
 
     char buffer[BUFFER_EXCEPTION_REASON_SIZE] ; // To store the exception 
reason
@@ -514,13 +515,14 @@
         return NULL ;
     }
 
-    msg.read(link);
+    /* virtual constructor call */
+    msg = NM_Factory::receive(link);
 
-    rep.type = msg.type ;
+    rep.type = msg->type ;
     rep.exception = e_NO_EXCEPTION ;
-    rep.federate = msg.federate ;
+    rep.federate = msg->federate ;
 
-    auditServer.startLine(msg.federation, msg.federate, msg.type);
+    auditServer.startLine(msg->federation, msg->federate, msg->type);
 
     // This macro is used to copy any non null exception reason
     // string into our buffer(used for Audit purpose).
@@ -530,7 +532,7 @@
     buffer[0] = 0 ;
 
     try {
-        link = chooseProcessingMethod(link, &msg);
+        link = chooseProcessingMethod(link, msg);
     }
     catch (ArrayIndexOutOfBounds &e) {
         D.Out(pdExcept, "Catching \"%s\" exception.", e._name);
@@ -984,4 +986,4 @@
 
 }} // namespace certi/rtig
 
-// $Id: RTIG.cc,v 3.36.2.1 2008/03/18 15:55:58 erk Exp $
+// $Id: RTIG.cc,v 3.36.2.2 2008/04/09 14:16:33 erk Exp $




reply via email to

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