[Rock-dev] Typelib Marshaling

Sylvain Joyeux bir.sylvain at gmail.com
Tue Sep 1 15:16:02 CEST 2015


Have a look at opaque handling in the mqueue transport, that should show
you how to do it.

Sylvain

On Tue, Sep 1, 2015 at 9:16 AM, Janosch Machowinski <
Janosch.Machowinski at dfki.de> wrote:

> 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
>
> _______________________________________________
> Rock-dev mailing list
> Rock-dev at dfki.de
> http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.dfki.de/pipermail/rock-dev/attachments/20150901/ca2b8c27/attachment.htm 


More information about the Rock-dev mailing list