In addition to streaming, I think we need to make it easier to encode data using AMQP types (for portability). The framing::Buffer class has a nice, but incomplete set of methods for doing this:

framing::buffer b;
b.putMediumString("This is a medium string");
b.putShort(i);
b.putDouble(22.0 / i);

But you have to watch out not to overrun the buffer, I haven't figured out a way to get that buffer into message content without making an extra copy, and converting a buffer to a string is not the most obvious way to send encoded binary data.

Some possible solutions:

* Add the putXXX() and getXXX() methods for each type to the Message API
* Create a class for putting and getting binary data that takes a message, and puts and gets binary data

Message m;
BinaryStuffer bs(m);
bs.putShort(i);

* Add a MapMessage type, as in JavaJMS.

Jonathan

Gordon Sim wrote:
Jonathan Robie wrote:
On the whole, I really like this. Comparing the example programs to the existing examples, I think it does simplify quite a bit.

A few thoughts:

1. Streaming data into or out of messages

I really want to be able to stream into or out of messages directly.

Instead of:

           message_data << "Message " << i;
           message.setData(message_data.str());

I would like to be able to do something like:

           message.getData() << "Message " << i;

Yes, I can see that would be convenient.


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

Reply via email to