summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/framing/AMQHeaderBody.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/framing/AMQHeaderBody.cpp')
-rw-r--r--cpp/src/qpid/framing/AMQHeaderBody.cpp42
1 files changed, 11 insertions, 31 deletions
diff --git a/cpp/src/qpid/framing/AMQHeaderBody.cpp b/cpp/src/qpid/framing/AMQHeaderBody.cpp
index 4d3611eb40..6a3c8f27d1 100644
--- a/cpp/src/qpid/framing/AMQHeaderBody.cpp
+++ b/cpp/src/qpid/framing/AMQHeaderBody.cpp
@@ -22,54 +22,34 @@
#include "qpid/QpidError.h"
#include "BasicHeaderProperties.h"
-qpid::framing::AMQHeaderBody::AMQHeaderBody(int classId) : weight(0), contentSize(0){
- createProperties(classId);
-}
+qpid::framing::AMQHeaderBody::AMQHeaderBody(int) : weight(0), contentSize(0) {}
-qpid::framing::AMQHeaderBody::AMQHeaderBody() : properties(0), weight(0), contentSize(0){
-}
+qpid::framing::AMQHeaderBody::AMQHeaderBody() : weight(0), contentSize(0){}
-qpid::framing::AMQHeaderBody::~AMQHeaderBody(){
- delete properties;
-}
+qpid::framing::AMQHeaderBody::~AMQHeaderBody(){}
uint32_t qpid::framing::AMQHeaderBody::size() const{
- return 12 + properties->size();
+ return 12 + properties.size();
}
void qpid::framing::AMQHeaderBody::encode(Buffer& buffer) const {
- buffer.putShort(properties->classId());
+ buffer.putShort(properties.classId());
buffer.putShort(weight);
buffer.putLongLong(contentSize);
- properties->encode(buffer);
+ properties.encode(buffer);
}
void qpid::framing::AMQHeaderBody::decode(Buffer& buffer, uint32_t bufSize){
- uint16_t classId = buffer.getShort();
+ buffer.getShort(); // Ignore classId
weight = buffer.getShort();
contentSize = buffer.getLongLong();
- createProperties(classId);
- properties->decode(buffer, bufSize - 12);
-}
-
-void qpid::framing::AMQHeaderBody::createProperties(int classId){
- switch(classId){
- case BASIC:
- properties = new qpid::framing::BasicHeaderProperties();
- break;
- default:
- THROW_QPID_ERROR(FRAMING_ERROR, "Unknown header class");
- }
+ properties.decode(buffer, bufSize - 12);
}
void qpid::framing::AMQHeaderBody::print(std::ostream& out) const
{
out << "header (" << size() << " bytes)" << " content_size=" << getContentSize();
- const BasicHeaderProperties* props =
- dynamic_cast<const BasicHeaderProperties*>(getProperties());
- if (props) {
- out << ", message_id=" << props->getMessageId();
- out << ", delivery_mode=" << (int) props->getDeliveryMode();
- out << ", headers=" << const_cast<BasicHeaderProperties*>(props)->getHeaders();
- }
+ out << ", message_id=" << properties.getMessageId();
+ out << ", delivery_mode=" << (int) properties.getDeliveryMode();
+ out << ", headers=" << properties.getHeaders();
}