summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/framing
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/framing')
-rw-r--r--cpp/src/qpid/framing/AMQFrame.cpp38
-rw-r--r--cpp/src/qpid/framing/AMQFrame.h5
2 files changed, 10 insertions, 33 deletions
diff --git a/cpp/src/qpid/framing/AMQFrame.cpp b/cpp/src/qpid/framing/AMQFrame.cpp
index d863970ece..cd60cd971f 100644
--- a/cpp/src/qpid/framing/AMQFrame.cpp
+++ b/cpp/src/qpid/framing/AMQFrame.cpp
@@ -32,12 +32,7 @@
namespace qpid {
namespace framing {
-void AMQFrame::init() {
- bof = eof = bos = eos = true;
- subchannel=0;
- channel=0;
- encodedSizeCache = 0;
-}
+void AMQFrame::init() { bof = eof = bos = eos = true; subchannel=0; channel=0; }
AMQFrame::AMQFrame(const boost::intrusive_ptr<AMQBody>& b) : body(b) { init(); }
@@ -45,28 +40,13 @@ AMQFrame::AMQFrame(const AMQBody& b) : body(b.clone()) { init(); }
AMQFrame::~AMQFrame() {}
-AMQBody* AMQFrame::getBody() {
- // Non-const AMQBody* may be used to modify the body.
- encodedSizeCache = 0;
- return body.get();
-}
-
-const AMQBody* AMQFrame::getBody() const {
- return body.get();
-}
-
-void AMQFrame::setMethod(ClassId c, MethodId m) {
- encodedSizeCache = 0;
- body = MethodBodyFactory::create(c,m);
-}
+void AMQFrame::setMethod(ClassId c, MethodId m) { body = MethodBodyFactory::create(c,m); }
uint32_t AMQFrame::encodedSize() const {
- if (!encodedSizeCache) {
- encodedSizeCache = frameOverhead() + body->encodedSize();
- if (body->getMethod())
- encodedSizeCache += sizeof(ClassId)+sizeof(MethodId);
- }
- return encodedSizeCache;
+ uint32_t size = frameOverhead() + body->encodedSize();
+ if (body->getMethod())
+ size += sizeof(ClassId)+sizeof(MethodId);
+ return size;
}
uint32_t AMQFrame::frameOverhead() {
@@ -102,13 +82,11 @@ void AMQFrame::encode(Buffer& buffer) const
}
bool AMQFrame::decode(Buffer& buffer)
-{
+{
if(buffer.available() < frameOverhead())
return false;
buffer.record();
- encodedSizeCache = 0;
- uint32_t start = buffer.getPosition();
uint8_t flags = buffer.getOctet();
uint8_t framing_version = (flags & 0xc0) >> 6;
if (framing_version != 0)
@@ -157,7 +135,7 @@ bool AMQFrame::decode(Buffer& buffer)
throw IllegalArgumentException(QPID_MSG("Invalid frame type " << type));
}
body->decode(buffer, body_size);
- encodedSizeCache = buffer.getPosition() - start;
+
return true;
}
diff --git a/cpp/src/qpid/framing/AMQFrame.h b/cpp/src/qpid/framing/AMQFrame.h
index 29e368b671..d7b04f0f65 100644
--- a/cpp/src/qpid/framing/AMQFrame.h
+++ b/cpp/src/qpid/framing/AMQFrame.h
@@ -43,8 +43,8 @@ class AMQFrame : public AMQDataBlock
ChannelId getChannel() const { return channel; }
void setChannel(ChannelId c) { channel = c; }
- QPID_COMMON_EXTERN AMQBody* getBody();
- QPID_COMMON_EXTERN const AMQBody* getBody() const;
+ AMQBody* getBody() { return body.get(); }
+ const AMQBody* getBody() const { return body.get(); }
AMQMethodBody* getMethod() { return getBody() ? getBody()->getMethod() : 0; }
const AMQMethodBody* getMethod() const { return getBody() ? getBody()->getMethod() : 0; }
@@ -102,7 +102,6 @@ class AMQFrame : public AMQDataBlock
bool eof : 1;
bool bos : 1;
bool eos : 1;
- mutable uint32_t encodedSizeCache;
};
QPID_COMMON_EXTERN std::ostream& operator<<(std::ostream&, const AMQFrame&);