<div dir="ltr">Have a look at opaque handling in the mqueue transport, that should show you how to do it.<div><br></div><div>Sylvain</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Sep 1, 2015 at 9:16 AM, Janosch Machowinski <span dir="ltr"><<a href="mailto:Janosch.Machowinski@dfki.de" target="_blank">Janosch.Machowinski@dfki.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hey,<br>
we are using the typelib marshaler to implement a<br>
second network transport. For Mashaling we use this code :<br>
while (static_cast<RTT::base::InputPortInterface<br>
*>(handle.port)->read(handle.sample, false) == RTT::NewData)<br>
gotNewData = true;<br>
<br>
if (gotNewData) {<br>
Communication::DataContainer data;<br>
<br>
handle.transport->refreshTypelibSample(handle.transportHandle);<br>
handle.transport->marshal(data.buffer, handle.transportHandle);<br>
which works fine.<br>
<br>
In case that the port contains a RoPtr<base::samples::Frame> we get an<br>
std::bad_alloc on<br>
unmashaling using this code :<br>
<br>
handle.transport->unmarshal(data.buffer, handle.transportHandle);<br>
<br>
The Handle here looks like this :<br>
class PortHandle<br>
{<br>
public:<br>
std::string name;<br>
orogen_transports::TypelibMarshallerBase *transport;<br>
RTT::base::DataSourceBase::shared_ptr sample;<br>
orogen_transports::TypelibMarshallerBase::Handle *transportHandle;<br>
RTT::base::PortInterface *port;<br>
};<br>
And is set up using this code :<br>
RTT::types::TypeInfo const *type = port->getTypeInfo();<br>
curHandle.transport =<br>
dynamic_cast<orogen_transports::TypelibMarshallerBase<br>
*>(type->getProtocol(orogen_transports::TYPELIB_MARSHALLER_ID));<br>
if (! curHandle.transport) {<br>
return false;<br>
}<br>
<br>
curHandle.transportHandle = curHandle.transport->createSample();<br>
curHandle.sample =<br>
curHandle.transport->getDataSource(curHandle.transportHandle);<br>
<br>
Any ideas what is wrong ? I suspect, that I need to initialize the<br>
orocos sample somehow on the<br>
receiving end, before unmarhsaling the data...<br>
Greetings<br>
Janosch<br>
<br>
--<br>
Dipl. Inf. Janosch Machowinski<br>
SAR- & Sicherheitsrobotik<br>
<br>
Universität Bremen<br>
FB 3 - Mathematik und Informatik<br>
AG Robotik<br>
Robert-Hooke-Straße 1<br>
28359 Bremen, Germany<br>
<br>
Zentrale: <a href="tel:%2B49%20421%20178%2045-6611" value="+49421178456611">+49 421 178 45-6611</a><br>
<br>
Besuchsadresse der Nebengeschäftstelle:<br>
Robert-Hooke-Straße 5<br>
28359 Bremen, Germany<br>
<br>
Tel.: <a href="tel:%2B49%20421%20178%2045-6614" value="+49421178456614">+49 421 178 45-6614</a><br>
Empfang: <a href="tel:%2B49%20421%20178%2045-6600" value="+49421178456600">+49 421 178 45-6600</a><br>
Fax: <a href="tel:%2B49%20421%20178%2045-4150" value="+49421178454150">+49 421 178 45-4150</a><br>
E-Mail: <a href="mailto:jmachowinski@informatik.uni-bremen.de">jmachowinski@informatik.uni-bremen.de</a><br>
<br>
Weitere Informationen: <a href="http://www.informatik.uni-bremen.de/robotik" rel="noreferrer" target="_blank">http://www.informatik.uni-bremen.de/robotik</a><br>
<br>
_______________________________________________<br>
Rock-dev mailing list<br>
<a href="mailto:Rock-dev@dfki.de">Rock-dev@dfki.de</a><br>
<a href="http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev" rel="noreferrer" target="_blank">http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev</a><br>
</blockquote></div><br></div>