qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alan Conway <acon...@redhat.com>
Subject Re: How to send binary data in qpid
Date Tue, 07 Apr 2009 13:41:15 GMT
qpid_user wrote:
> I have a struct xyz to be sent. I did try sending it in following way 
> message.setData((const char*)xyz); // sends incomplete data, upto '\0' character.
> 
> Hi Gordon 
> You seem to have sent binary data. If you don't mind would you please let me know how
to send the binary data using qpid...
> 
> say i want to send/recv  xyz structure on message queue. how do we do the same?
> 

You can do something like this:

struct Foo {...};
Foo foo;
message.setData(std::string(reinterpret_cast<const char*>(&foo), sizeof(foo));
...
foo = *reinterpret_cast<const Foo*>(message.getData());

PROVIDED that all the hosts in your cluster have identical architecture. This is 
a highly non-portable way to encode things and can fail tragically if any of 
your hosts have different architecture or if you have different versions of the 
client built with different compilers versions or even different compiler flags.

For more portable alternatives, you can use the qpid::framing::Buffer to encode 
things, but you have to write the code to serialize your structure into calls on 
the Buffer put/get functions. This is not really part of the client API so it 
may change in future

For a more full-featured serialization framework you might want to check out 
boost.serialization.

Cheers,
Alan.

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org


Mime
View raw message