certi-cvs
[Top][All Lists]
Advanced

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

[certi-cvs] certi libCERTI/Message_R.cc libCERTI/NM_Classes...


From: certi-cvs
Subject: [certi-cvs] certi libCERTI/Message_R.cc libCERTI/NM_Classes...
Date: Tue, 24 Nov 2009 19:11:38 +0000

CVSROOT:        /sources/certi
Module name:    certi
Changes by:     Eric NOULARD <erk>      09/11/24 19:11:38

Modified files:
        libCERTI       : Message_R.cc NM_Classes.cc MessageBuffer.hh 
                         NetworkMessage_RW.cc NetworkMessage.hh 
                         NetworkMessage.cc MessageBuffer.cc 
        RTIG           : RTIG.cc 

Log message:
        Check-in clean-up patch from Mathias
        patch #6997: Save some malloc/free pairs for the payload

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/Message_R.cc?cvsroot=certi&r1=3.36&r2=3.37
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NM_Classes.cc?cvsroot=certi&r1=3.20&r2=3.21
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/MessageBuffer.hh?cvsroot=certi&r1=3.8&r2=3.9
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NetworkMessage_RW.cc?cvsroot=certi&r1=3.54&r2=3.55
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NetworkMessage.hh?cvsroot=certi&r1=3.52&r2=3.53
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NetworkMessage.cc?cvsroot=certi&r1=3.42&r2=3.43
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/MessageBuffer.cc?cvsroot=certi&r1=3.16&r2=3.17
http://cvs.savannah.gnu.org/viewcvs/certi/RTIG/RTIG.cc?cvsroot=certi&r1=3.60&r2=3.61

Patches:
Index: libCERTI/Message_R.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/Message_R.cc,v
retrieving revision 3.36
retrieving revision 3.37
diff -u -b -r3.36 -r3.37
--- libCERTI/Message_R.cc       19 Nov 2009 18:15:32 -0000      3.36
+++ libCERTI/Message_R.cc       24 Nov 2009 19:11:37 -0000      3.37
@@ -17,7 +17,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: Message_R.cc,v 3.36 2009/11/19 18:15:32 erk Exp $
+// $Id: Message_R.cc,v 3.37 2009/11/24 19:11:37 erk Exp $
 // ----------------------------------------------------------------------------
 
 
@@ -85,7 +85,7 @@
        
     // 3. Read informations from Message Body according to message type.
     if (exception != e_NO_EXCEPTION) {
-        exceptionReason = msgBuffer.read_string();
+        msgBuffer.read_string(exceptionReason);
     }
     else {
  
@@ -582,28 +582,28 @@
 void
 Message::readLabel(MessageBuffer &msgBuffer)
 {
-    label = msgBuffer.read_string() ;
+    msgBuffer.read_string(label);
 }
 
 // ----------------------------------------------------------------------------
 void
 Message::readName(MessageBuffer &msgBuffer)
 {
-    name = msgBuffer.read_string();
+    msgBuffer.read_string(name);
 }
 
 // ----------------------------------------------------------------------------
 void
 Message::readFederationName(MessageBuffer &msgBuffer)
 {
-    federationName = msgBuffer.read_string() ;  
+    msgBuffer.read_string(federationName);
 }
 
 // ----------------------------------------------------------------------------
 void
 Message::readFederateName(MessageBuffer &msgBuffer)
 {
-    federateName = msgBuffer.read_string() ;
+    msgBuffer.read_string(federateName);
 }
 
 // ----------------------------------------------------------------------------
@@ -617,14 +617,14 @@
 void
 Message::readTag(MessageBuffer &msgBuffer)
 {
-    tag = msgBuffer.read_string();
+    msgBuffer.read_string(tag);
 }
 
 // ----------------------------------------------------------------------------
 void
 Message::readFEDid(MessageBuffer &msgBuffer)
 {
-    FEDid = msgBuffer.read_string();
+    msgBuffer.read_string(FEDid);
 }
 
 // ----------------------------------------------------------------------------
@@ -636,7 +636,7 @@
 
     valueArray.resize(handleArraySize) ;
     for (int i = 0 ; i < handleArraySize ; i ++)
-        valueArray[i] = msgBuffer.read_string();
+        msgBuffer.read_string(valueArray[i]);
 }
 
 // ----------------------------------------------------------------------------
@@ -649,4 +649,4 @@
 
 } // namespace certi
 
-// $Id: Message_R.cc,v 3.36 2009/11/19 18:15:32 erk Exp $
+// $Id: Message_R.cc,v 3.37 2009/11/24 19:11:37 erk Exp $

Index: libCERTI/NM_Classes.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/NM_Classes.cc,v
retrieving revision 3.20
retrieving revision 3.21
diff -u -b -r3.20 -r3.21
--- libCERTI/NM_Classes.cc      18 Nov 2009 18:50:49 -0000      3.20
+++ libCERTI/NM_Classes.cc      24 Nov 2009 19:11:37 -0000      3.21
@@ -423,7 +423,7 @@
 }
 void NM_FOM_Dimension::deserialize(MessageBuffer& msgBuffer) {
        _handle = msgBuffer.read_uint32();
-       _name = msgBuffer.read_string();
+       msgBuffer.read_string(_name);
 }
 /*<END>---------- FOM_Dimension ------------<END>*/
 
@@ -438,7 +438,7 @@
 } /* end of serialize */ 
 void NM_FOM_Routing_Space::deserialize(MessageBuffer& msgBuffer) {
        _handle = msgBuffer.read_uint32();
-       _name = msgBuffer.read_string();
+       msgBuffer.read_string(_name);
        uint32_t size = msgBuffer.read_uint32();
         _dimensions.resize(size);
         for (uint32_t i = 0; i < size; ++i)
@@ -456,7 +456,7 @@
 }
 void NM_FOM_Attribute::deserialize(MessageBuffer& msgBuffer) {
        _handle = msgBuffer.read_uint32();
-       _name = msgBuffer.read_string();
+       msgBuffer.read_string(_name);
         _spaceHandle = msgBuffer.read_uint32();
        _order = msgBuffer.read_uint8();
        _transport = msgBuffer.read_uint8();
@@ -475,7 +475,7 @@
 } /* end of serialize */ 
 void NM_FOM_Object_Class::deserialize(MessageBuffer& msgBuffer) {
        _handle = msgBuffer.read_uint32();
-       _name = msgBuffer.read_string();
+       msgBuffer.read_string(_name);
         _superclassHandle = msgBuffer.read_uint32();
        uint32_t size = msgBuffer.read_uint32();
         _attributes.resize(size);
@@ -491,7 +491,7 @@
 }
 void NM_FOM_Parameter::deserialize(MessageBuffer& msgBuffer) {
        _handle = msgBuffer.read_uint32();
-       _name = msgBuffer.read_string();
+       msgBuffer.read_string(_name);
 }
 /*<END>---------- FOM_FOM_Parameter ------------<END>*/
 
@@ -510,7 +510,7 @@
 } /* end of serialize */ 
 void NM_FOM_Interaction_Class::deserialize(MessageBuffer& msgBuffer) {
        _handle = msgBuffer.read_uint32();
-       _name = msgBuffer.read_string();
+       msgBuffer.read_string(_name);
         _superclassHandle = msgBuffer.read_uint32();
         _spaceHandle = msgBuffer.read_uint32();
        _order = msgBuffer.read_uint8();
@@ -541,8 +541,8 @@
        /* call mother class */      
        Super::deserialize(msgBuffer); 
        /* specific code (if any) goes here */
-       federationName = msgBuffer.read_string();
-       FEDid          = msgBuffer.read_string();
+       msgBuffer.read_string(federationName);
+       msgBuffer.read_string(FEDid);
 } /* end of deserialize */
 /*<END>---------- Create_Federation_Execution ------------<END>*/
 
@@ -564,7 +564,7 @@
        /* call mother class */      
        Super::deserialize(msgBuffer); 
        /* specific code (if any) goes here */
-       federationName = msgBuffer.read_string();    
+       msgBuffer.read_string(federationName);
 } /* end of deserialize */
 /*<END>---------- Destroy_Federation_Execution ------------<END>*/
 
@@ -607,8 +607,8 @@
        multicastAddress   = msgBuffer.read_uint32();
        bestEffortAddress  = msgBuffer.read_uint32();
        bestEffortPeer     = msgBuffer.read_uint32();
-       federationName     = msgBuffer.read_string();
-       federateName       = msgBuffer.read_string();
+       msgBuffer.read_string(federationName);
+       msgBuffer.read_string(federateName);
        uint32_t size = msgBuffer.read_uint32();
         _routingSpaces.resize(size);
         for (uint32_t i = 0; i < size; ++i)
@@ -1268,7 +1268,7 @@
        objectClass     = msgBuffer.read_int32();
     valueArray.resize(handleArraySize) ;       
     for (i = 0; i < handleArraySize; i++)
-        valueArray[i] = msgBuffer.read_string();
+        msgBuffer.read_string(valueArray[i]);
 } /* end of deserialize */
 /*<END>---------- Update_Attribute_Values ------------<END>*/
 
@@ -1310,7 +1310,7 @@
        interactionClass = msgBuffer.read_int32();
     valueArray.resize(handleArraySize);
     for (i = 0; i < handleArraySize; i++)
-        valueArray[i] = msgBuffer.read_string();
+        msgBuffer.read_string(valueArray[i]);
 } /* end of deserialize */
 /*<END>---------- Send_Interaction ------------<END>*/
 

Index: libCERTI/MessageBuffer.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/MessageBuffer.hh,v
retrieving revision 3.8
retrieving revision 3.9
diff -u -b -r3.8 -r3.9
--- libCERTI/MessageBuffer.hh   24 Nov 2009 16:45:56 -0000      3.8
+++ libCERTI/MessageBuffer.hh   24 Nov 2009 19:11:37 -0000      3.9
@@ -257,6 +257,9 @@
        std::string
        read_string();
        
+        void
+       read_string(std::string&);
+       
        int32_t
        write_bool(const bool toggle) {
                if(toggle) {

Index: libCERTI/NetworkMessage_RW.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/NetworkMessage_RW.cc,v
retrieving revision 3.54
retrieving revision 3.55
diff -u -b -r3.54 -r3.55
--- libCERTI/NetworkMessage_RW.cc       21 Oct 2009 20:04:46 -0000      3.54
+++ libCERTI/NetworkMessage_RW.cc       24 Nov 2009 19:11:37 -0000      3.55
@@ -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.54 2009/10/21 20:04:46 erk Exp $
+// $Id: NetworkMessage_RW.cc,v 3.55 2009/11/24 19:11:37 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include "NetworkMessage.hh"
@@ -39,7 +39,7 @@
        if ((type==NOT_USED) || (type==LAST)) {
                throw RTIinternalError("Invalid network type (not a valid 
type);");
        }
-       D.Out(pdDebug, "Serialize <%s>", getName().c_str());
+       D.Out(pdDebug, "Serialize <%s>", getName());
        /* type of message */
        msgBuffer.write_int32(type);
        msgBuffer.write_int32(exception);
@@ -91,11 +91,11 @@
        }
        _isLabelled = msgBuffer.read_bool();
        if (_isLabelled) {
-               label = msgBuffer.read_string();
+               msgBuffer.read_string(label);
        }
        _isTagged = msgBuffer.read_bool();
        if (_isTagged) {
-               tag = msgBuffer.read_string();
+               msgBuffer.read_string(tag);
        }
        G.Out(pdGendoc,"exit NetworkMessage::deserialize");
 } /* end of deserialize */
@@ -112,7 +112,7 @@
        serialize(msgBuffer);
        /* 2- update message buffer 'reserved bytes' header */
        msgBuffer.updateReservedBytes();
-       D.Out(pdDebug,"Sending <%s> whose buffer has <%u> 
bytes",getName().c_str(),msgBuffer.size());
+       D.Out(pdDebug,"Sending <%s> whose buffer has <%u> 
bytes",getName(),msgBuffer.size());
        //msgBuffer.show(msgBuf(0),5);
        /* 3- effectively send the raw message to socket */
 
@@ -151,4 +151,4 @@
 
 } // namespace certi
 
-// $Id: NetworkMessage_RW.cc,v 3.54 2009/10/21 20:04:46 erk Exp $
+// $Id: NetworkMessage_RW.cc,v 3.55 2009/11/24 19:11:37 erk Exp $

Index: libCERTI/NetworkMessage.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/NetworkMessage.hh,v
retrieving revision 3.52
retrieving revision 3.53
diff -u -b -r3.52 -r3.53
--- libCERTI/NetworkMessage.hh  21 Nov 2009 21:00:56 -0000      3.52
+++ libCERTI/NetworkMessage.hh  24 Nov 2009 19:11:37 -0000      3.53
@@ -17,7 +17,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: NetworkMessage.hh,v 3.52 2009/11/21 21:00:56 erk Exp $
+// $Id: NetworkMessage.hh,v 3.53 2009/11/24 19:11:37 erk Exp $
 // ----------------------------------------------------------------------------
 
 #ifndef CERTI_NETWORK_MESSAGE_HH
@@ -244,7 +244,7 @@
        OrderType order ;
 
        /** The name corresponding to message type */
-       const std::string& getName() const {return name;}
+       const char* getName() const {return name;}
 
 
        /**
@@ -270,7 +270,7 @@
         * should be initialized by the specialized
         * network message constructor
         */
-       std::string name;       
+       const char* name;       
 
        /** 
         * The network message type
@@ -335,4 +335,4 @@
 
 #endif // CERTI_NETWORK_MESSAGE_HH
 
-// $Id: NetworkMessage.hh,v 3.52 2009/11/21 21:00:56 erk Exp $
+// $Id: NetworkMessage.hh,v 3.53 2009/11/24 19:11:37 erk Exp $

Index: libCERTI/NetworkMessage.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/NetworkMessage.cc,v
retrieving revision 3.42
retrieving revision 3.43
diff -u -b -r3.42 -r3.43
--- libCERTI/NetworkMessage.cc  21 Nov 2009 21:00:56 -0000      3.42
+++ libCERTI/NetworkMessage.cc  24 Nov 2009 19:11:37 -0000      3.43
@@ -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.42 2009/11/21 21:00:56 erk Exp $
+// $Id: NetworkMessage.cc,v 3.43 2009/11/24 19:11:37 erk Exp $
 // ----------------------------------------------------------------------------
 
 
@@ -42,7 +42,7 @@
       _isLabelled(false), 
       _isTagged(false)
 {
-    name               = std::string("NetworkMessage (generic)");
+    name               = "NetworkMessage (generic)";
 
     federation         = 0 ;
     federate           = 0 ;
@@ -130,4 +130,4 @@
 
 } // namespace certi
 
-// $Id: NetworkMessage.cc,v 3.42 2009/11/21 21:00:56 erk Exp $
+// $Id: NetworkMessage.cc,v 3.43 2009/11/24 19:11:37 erk Exp $

Index: libCERTI/MessageBuffer.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/MessageBuffer.cc,v
retrieving revision 3.16
retrieving revision 3.17
diff -u -b -r3.16 -r3.17
--- libCERTI/MessageBuffer.cc   19 Nov 2009 18:15:31 -0000      3.16
+++ libCERTI/MessageBuffer.cc   24 Nov 2009 19:11:37 -0000      3.17
@@ -434,17 +434,28 @@
 std::string
 MessageBuffer::read_string() {
     std::string retval;
-    int32_t len;
-    char* buf;
-
-    read_int32(&len);
-    buf = new char[len];
-    read_chars(buf,len);
-    retval.assign(buf,len);
-    delete[] buf;
+    read_string(retval);
     return retval;
 } /* end of read_string */
 
+void
+MessageBuffer::read_string(std::string& s)
+{
+    int32_t len = read_int32();
+
+    if (len + readOffset > writeOffset) {
+        std::stringstream smsg;
+        smsg << "read_string::invalid read of size <" << len
+             << "> inside a buffer of readable size <"
+             << (int32_t)writeOffset-readOffset << "> (writeOffset="
+             <<writeOffset << ",readOffset="<<readOffset <<").";
+        throw RTIinternalError(smsg.str());
+    }
+
+    s.assign(reinterpret_cast<const char*>(buffer + readOffset), len);
+    readOffset += len;
+} /* end of read_string */
+
 void MessageBuffer::updateReservedBytes() {
        /* set up buffer endianess */
        if ((HostIsBigEndian() && bufferHasMyEndianness) ||

Index: RTIG/RTIG.cc
===================================================================
RCS file: /sources/certi/certi/RTIG/RTIG.cc,v
retrieving revision 3.60
retrieving revision 3.61
diff -u -b -r3.60 -r3.61
--- RTIG/RTIG.cc        19 Nov 2009 18:15:29 -0000      3.60
+++ RTIG/RTIG.cc        24 Nov 2009 19:11:38 -0000      3.61
@@ -18,7 +18,7 @@
 // along with this program ; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 //
-// $Id: RTIG.cc,v 3.60 2009/11/19 18:15:29 erk Exp $
+// $Id: RTIG.cc,v 3.61 2009/11/24 19:11:38 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include <config.h>
@@ -89,7 +89,7 @@
 Socket*
 RTIG::chooseProcessingMethod(Socket *link, NetworkMessage *msg)
 {
-    G.Out(pdGendoc,"enter RTIG::chooseProcessingMethod type 
(%s)",msg->getName().c_str());
+    G.Out(pdGendoc,"enter RTIG::chooseProcessingMethod type 
(%s)",msg->getName());
     // This may throw a security error.
     if ( msg->getType() != NetworkMessage::DESTROY_FEDERATION_EXECUTION)
        socketServer.checkMessage(link->returnSocket(), msg);
@@ -1036,4 +1036,4 @@
 
 }} // namespace certi/rtig
 
-// $Id: RTIG.cc,v 3.60 2009/11/19 18:15:29 erk Exp $
+// $Id: RTIG.cc,v 3.61 2009/11/24 19:11:38 erk Exp $




reply via email to

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