[Top][All Lists]
[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 $