00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "qpid/broker/Message.h"
00023 #include "qpid/broker/MessageDelivery.h"
00024 #include "qpid/framing/AMQFrame.h"
00025
00026 using namespace qpid;
00027 using namespace broker;
00028 using namespace framing;
00029
00030 struct MessageUtils
00031 {
00032 static boost::intrusive_ptr<Message> createMessage(const string& exchange, const string& routingKey,
00033 const string& messageId, uint64_t contentSize = 0)
00034 {
00035 boost::intrusive_ptr<Message> msg(new Message());
00036
00037 AMQFrame method(in_place<MessageTransferBody>(ProtocolVersion(), 0, exchange, 0, 0));
00038 AMQFrame header(in_place<AMQHeaderBody>());
00039
00040 msg->getFrames().append(method);
00041 msg->getFrames().append(header);
00042 MessageProperties* props = msg->getFrames().getHeaders()->get<MessageProperties>(true);
00043 props->setContentLength(contentSize);
00044 props->setMessageId(messageId);
00045 msg->getFrames().getHeaders()->get<DeliveryProperties>(true)->setRoutingKey(routingKey);
00046 return msg;
00047 }
00048
00049 static void addContent(boost::intrusive_ptr<Message> msg, const string& data)
00050 {
00051 AMQFrame content(in_place<AMQContentBody>(data));
00052 msg->getFrames().append(content);
00053 }
00054 };