certi-cvs
[Top][All Lists]
Advanced

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

[certi-cvs] certi/test/Billard Billard.cc


From: certi-cvs
Subject: [certi-cvs] certi/test/Billard Billard.cc
Date: Wed, 25 Jun 2008 14:23:59 +0000

CVSROOT:        /sources/certi
Module name:    certi
Changes by:     Eric NOULARD <erk>      08/06/25 14:23:59

Modified files:
        test/Billard   : Billard.cc 

Log message:
        Use MessageBuffer in order to handle heterogeneity  in the billard.
         [second part for interaction]
         
        This is a temporary solution before using plain IEEE-1516 type encoding.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/test/Billard/Billard.cc?cvsroot=certi&r1=3.39&r2=3.40

Patches:
Index: Billard.cc
===================================================================
RCS file: /sources/certi/certi/test/Billard/Billard.cc,v
retrieving revision 3.39
retrieving revision 3.40
diff -u -b -r3.39 -r3.40
--- Billard.cc  25 Jun 2008 13:52:20 -0000      3.39
+++ Billard.cc  25 Jun 2008 14:23:59 -0000      3.40
@@ -31,6 +31,7 @@
 
 #include <memory>
 #include <cstdlib>
+#include <cassert>
 
 using std::auto_ptr ;
 using std::string ;
@@ -630,39 +631,35 @@
 Billard::sendInteraction(double dx, double dy, const RTI::FedTime& 
InteractionTime,
                         RTI::ObjectHandle id)
 {
-    char buf[512] ;
+    certi::MessageBuffer buffer;
     RTI::ParameterHandleValuePairSet *parameterSet=NULL ;
 
     parameterSet = RTI::ParameterSetFactory::create(3);
 
-    // OLD : sprintf(buf, "%ld", id);
-    // OLD : parameterSet->add(ParamBoulID, buf, strlen(buf)+1);
-    memcpy(buf,&id,sizeof(id));
-    parameterSet->add(ParamBoulID, buf, sizeof(id));
+    buffer.reset();
+    buffer.write_int32(id);
+    buffer.updateReservedBytes();              
+    parameterSet->add(ParamBoulID, static_cast<char*>(buffer(0)), 
buffer.size());
 
     D.Out(pdDebug, "SendInteraction");
     D.Out(pdDebug, "SendInteraction - ParamBoulID= %u", ParamBoulID);
     D.Out(pdDebug, "SendInteraction - x= %d", id);
-    D.Out(pdDebug, "SendInteraction - buf= %s", buf);
 
-    // D.Out(pdDebug, "SendInteraction - ParamBoulID= %u, x= %f, buf= %s",
-    // ParamBoulID, Id, buf);
+    buffer.reset();
+       buffer.write_double(dx);
+       buffer.updateReservedBytes();
+    parameterSet->add(ParamDXID, static_cast<char*>(buffer(0)), buffer.size());
 
-    // OLD : sprintf(buf, "%f", dx);
-    // OLD : parameterSet->add(ParamDXID, buf, strlen(buf)+1);
-    memcpy(buf,&dx,sizeof(dx)); 
-    parameterSet->add(ParamDXID, buf, sizeof(dx));
-
-    D.Out(pdDebug, "SendInteraction - ParamDXID= %u, x= %f, buf= %s",
-          ParamDXID, dx, buf);
-
-    // OLD : sprintf(buf, "%f", dy);
-    // OLD : parameterSet->add(ParamDYID, buf, strlen(buf)+1);
-    memcpy(buf,&dy,sizeof(dy));
-    parameterSet->add(ParamDYID, buf, sizeof(dy));
+    D.Out(pdDebug, "SendInteraction - ParamDXID= %u, x= %f",
+          ParamDXID, dx);
 
-    D.Out(pdDebug, "SendInteraction - ParamDYID= %u, x= %f, buf= %s",
-          ParamDYID, dy, buf);
+    buffer.reset();
+    buffer.write_double(dy);
+    buffer.updateReservedBytes();
+    parameterSet->add(ParamDYID, static_cast<char*>(buffer(0)), buffer.size());
+
+    D.Out(pdDebug, "SendInteraction - ParamDYID= %u, x= %f",
+          ParamDYID, dy);
 
     try {
         if ( notimestamp )
@@ -706,24 +703,24 @@
     buffer.reset();
     buffer.write_double(x);
     buffer.updateReservedBytes();
-    attributeSet->add(AttrXID, 
static_cast<char*>(buffer(0)),buffer.size()+buffer.reservedBytes);    
+    attributeSet->add(AttrXID, static_cast<char*>(buffer(0)),buffer.size());   
 
     D.Out(pdDebug, "SendUpdate - AttrXID= %u, x= %f, size= %u, attribute 
size=%d",
-          AttrXID, x, attributeSet->size(),buffer.size()+buffer.reservedBytes);
+          AttrXID, x, attributeSet->size(),buffer.size());
     
     buffer.reset();
     buffer.write_double(y);    
     buffer.updateReservedBytes();
-    attributeSet->add(AttrYID, 
static_cast<char*>(buffer(0)),buffer.size()+buffer.reservedBytes);
+    attributeSet->add(AttrYID, static_cast<char*>(buffer(0)),buffer.size());
     D.Out(pdDebug, "SendUpdate - AttrYID= %u, y= %f, size= %u",
-          AttrYID, y, buffer.size()+buffer.reservedBytes);
+          AttrYID, y, buffer.size());
 
     buffer.reset();
     buffer.write_int32(color); 
     buffer.updateReservedBytes();
-    attributeSet->add(AttrColorID, 
static_cast<char*>(buffer(0)),buffer.size()+buffer.reservedBytes);
+    attributeSet->add(AttrColorID, 
static_cast<char*>(buffer(0)),buffer.size());
    
     D.Out(pdDebug, "SendUpdate - AttrColorID= %u, color= %f, size= %u",
-          AttrColorID, color, buffer.size()+buffer.reservedBytes);
+          AttrColorID, color, buffer.size());
 
     try {
         if ( notimestamp )
@@ -838,7 +835,7 @@
            RTI::InvalidFederationTime,
            RTI::FederateInternalError)
 {
-    char *parmValue ;
+       certi::MessageBuffer buffer;
     RTI::ULong valueLength ;
     int dx1 = 0 ;
     int dy1 = 0 ;
@@ -859,49 +856,31 @@
         RTI::ParameterHandle parmHandle = theParameters.getHandle(j);
 
         valueLength = theParameters.getValueLength(j);
-        parmValue = new char[valueLength] ;
-        theParameters.getValue(j, parmValue, valueLength);
+        assert(valueLength>0);
+        buffer.resize(valueLength);
+        buffer.reset();
+        theParameters.getValue(j, static_cast<char*>(buffer(0)), valueLength); 
       
+        buffer.assumeSizeFromReservedBytes();
 
         if (parmHandle == ParamDXID) {
-            if (parmValue != NULL) {
-                // OLD : dx1 = atoi(parmValue);
-                double d_dx1 ;
-                memcpy(&d_dx1,parmValue,valueLength) ;
-                dx1 = static_cast<int>(d_dx1);
-                // Local.dx = atof(parmValue);
-                D.Out(pdDebug, "receiveInteraction(*) - dx= %s", parmValue);
-                delete[] parmValue ;
+             dx1 = static_cast<int>(buffer.read_double());                     
       
             }
-            else
-                D.Out(pdError, "Missing Attribute in RAV.");
-        }
-        else
+        else {
             if (parmHandle == ParamDYID) {
-                if (parmValue != NULL) {
-                    // OLD : dy1 = atoi(parmValue);
-                    double d_dy1 ;
-                    memcpy(&d_dy1,parmValue,valueLength) ;
-                    dy1 = static_cast<int>(d_dy1);
-                    // Local.dy = atof(parmValue);
-                    D.Out(pdDebug, "receiveInteraction(*) - dy= %s", 
parmValue);
-                    delete[] parmValue ;
-                }
-                else
-                    D.Out(pdError, "Missing Attribute in RAV.");
+               dy1 = static_cast<int>(buffer.read_double());                   
 
             }
-            else
+            
+            else {
                 if (parmHandle == ParamBoulID) {
-                    if (parmValue != NULL) {
-                        // OLD : h1 = atoi(parmValue);
-                        RTI::ObjectHandle d_h1 ;
-                        memcpy(&d_h1,parmValue,valueLength) ;
-                        h1 = d_h1 ;
+                    h1 = buffer.read_int32(); ;
                         bille = true ;
                     }
-                    else
+                else {
                         D.Out(pdError, "Unrecognized parameter handle");
                 }
     }
+        }
+    }
     if (bille) {
        if (h1 == local.ID) {
            local.dx = dx1 ;
@@ -932,7 +911,6 @@
     float y1 = 0 ;
 
     RTI::ULong valueLength ;
-    char *attrValue ;
 
     D.Out(pdDebug, "reflectAttributeValues - nb attributs= %d",
           theAttributes.size());
@@ -941,28 +919,17 @@
 
         RTI::AttributeHandle parmHandle = theAttributes.getHandle(j);
         valueLength = theAttributes.getValueLength(j);
-        attrValue = new char[valueLength] ;
-        theAttributes.getValue(j, attrValue, valueLength);
+        assert(valueLength>0);
+        buffer.resize(valueLength);        
+        buffer.reset();        
+        theAttributes.getValue(j, static_cast<char*>(buffer(0)), valueLength); 
       
+        buffer.assumeSizeFromReservedBytes();
 
         if (parmHandle == AttrXID) {
-            if (attrValue != NULL) {                               
-                memcpy(buffer(0),attrValue,valueLength);
-                buffer.assumeSizeFromReservedBytes();
                 x1 = buffer.read_double();                
-                delete[] attrValue ;
-            }
-            else
-                D.Out(pdError, "Fed: ERREUR: missing Attribute.");
         }
         else if (parmHandle == AttrYID) {
-            if (attrValue != NULL) {                                
-                memcpy(buffer(0),attrValue,valueLength);
-                buffer.assumeSizeFromReservedBytes();
                 y1 = buffer.read_double();
-                delete[] attrValue ;
-            }
-            else
-                D.Out(pdError, "Fed: ERREUR: missing Attribute.");
         }
         else
             D.Out(pdError, "Fed: ERREUR: handle inconnu.");
@@ -1008,7 +975,6 @@
     certi::MessageBuffer buffer;
 
     RTI::ULong valueLength ;
-    char *attrValue ;
 
     D.Out(pdDebug, "reflectAttributeValues - nb attributs= %d",
           theAttributes.size());
@@ -1017,32 +983,22 @@
 
         RTI::AttributeHandle parmHandle = theAttributes.getHandle(j);
         valueLength = theAttributes.getValueLength(j);
-        attrValue = new char[valueLength] ;
-        theAttributes.getValue(j, attrValue, valueLength);
+        assert(valueLength>0);
+        buffer.resize(valueLength);        
+        buffer.reset();        
+        theAttributes.getValue(j, static_cast<char*>(buffer(0)), valueLength); 
       
+        buffer.assumeSizeFromReservedBytes();
 
         if (parmHandle == AttrXID) {
-            if (attrValue != NULL) {
-                memcpy(buffer(0),attrValue,valueLength);
-                buffer.assumeSizeFromReservedBytes();
                 x1 = buffer.read_double();                
-                delete[] attrValue ;
-            }
-            else
-                D.Out(pdError, "Fed: ERREUR: missing Attribute.");
         }
         else if (parmHandle == AttrYID) {
-            if (attrValue != NULL) {
-                memcpy(buffer(0),attrValue,valueLength);
-                buffer.assumeSizeFromReservedBytes();
                 y1 = buffer.read_double();                 
-                delete[] attrValue ;
             }
-            else
-                D.Out(pdError, "Fed: ERREUR: missing Attribute.");
-        }
-        else
+        else {
             D.Out(pdError, "Fed: ERREUR: handle inconnu.");
     }
+    }
     
     vector<Ball>::iterator it = remote.begin() ;
     while (it != remote.end() && it->ID != theObject)




reply via email to

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