[Rock-dev] Typelib Marshaling

Janosch Machowinski Janosch.Machowinski at dfki.de
Tue Sep 1 14:16:48 CEST 2015


Hey,
we are using the typelib marshaler to implement a
second network transport. For Mashaling we use this code :
         while (static_cast<RTT::base::InputPortInterface 
*>(handle.port)->read(handle.sample, false) == RTT::NewData)
             gotNewData = true;

         if (gotNewData) {
             Communication::DataContainer data;

handle.transport->refreshTypelibSample(handle.transportHandle);
             handle.transport->marshal(data.buffer, handle.transportHandle);
which works fine.

In case that the port contains a RoPtr<base::samples::Frame> we get an 
std::bad_alloc on
unmashaling using this code :

         handle.transport->unmarshal(data.buffer, handle.transportHandle);

The Handle here looks like this :
     class PortHandle
     {
     public:
         std::string name;
         orogen_transports::TypelibMarshallerBase *transport;
         RTT::base::DataSourceBase::shared_ptr sample;
         orogen_transports::TypelibMarshallerBase::Handle *transportHandle;
         RTT::base::PortInterface *port;
     };
And is set up using this code :
         RTT::types::TypeInfo const *type = port->getTypeInfo();
         curHandle.transport = 
dynamic_cast<orogen_transports::TypelibMarshallerBase 
*>(type->getProtocol(orogen_transports::TYPELIB_MARSHALLER_ID));
         if (! curHandle.transport) {
             return false;
         }

         curHandle.transportHandle = curHandle.transport->createSample();
         curHandle.sample = 
curHandle.transport->getDataSource(curHandle.transportHandle);

Any ideas what is wrong ? I suspect, that I need to initialize the 
orocos sample somehow on the
receiving end, before unmarhsaling the data...
Greetings
     Janosch

-- 
  Dipl. Inf. Janosch Machowinski
  SAR- & Sicherheitsrobotik

  Universität Bremen
  FB 3 - Mathematik und Informatik
  AG Robotik
  Robert-Hooke-Straße 1
  28359 Bremen, Germany
  
  Zentrale: +49 421 178 45-6611
  
  Besuchsadresse der Nebengeschäftstelle:
  Robert-Hooke-Straße 5
  28359 Bremen, Germany
  
  Tel.:    +49 421 178 45-6614
  Empfang: +49 421 178 45-6600
  Fax:     +49 421 178 45-4150
  E-Mail:  jmachowinski at informatik.uni-bremen.de

  Weitere Informationen: http://www.informatik.uni-bremen.de/robotik



More information about the Rock-dev mailing list