diff options
author | Andrew Stitcher <astitcher@apache.org> | 2012-05-16 20:58:25 +0000 |
---|---|---|
committer | Andrew Stitcher <astitcher@apache.org> | 2012-05-16 20:58:25 +0000 |
commit | 1a49c40c0612de5704fb88c657d3b5d45ac4a445 (patch) | |
tree | 4ff5b78ec29f68262b9ded57a873b551172b3d2c /cpp | |
parent | 9950088c77895a83f06620d9e96bb478c39401e2 (diff) | |
download | qpid-python-1a49c40c0612de5704fb88c657d3b5d45ac4a445.tar.gz |
QPID-4004: Cruft in qpid::framing::Buffer class should be removed
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1339358 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/include/qpid/framing/Buffer.h | 50 | ||||
-rw-r--r-- | cpp/include/qpid/management/Buffer.h | 3 | ||||
-rw-r--r-- | cpp/src/qpid/framing/AMQFrame.cpp | 4 | ||||
-rw-r--r-- | cpp/src/qpid/framing/Buffer.cpp | 16 | ||||
-rw-r--r-- | cpp/src/qpid/framing/ProtocolInitiation.cpp | 2 | ||||
-rw-r--r-- | cpp/src/qpid/management/Buffer.cpp | 3 | ||||
-rw-r--r-- | cpp/src/qpid/management/ManagementAgent.cpp | 17 |
7 files changed, 31 insertions, 64 deletions
diff --git a/cpp/include/qpid/framing/Buffer.h b/cpp/include/qpid/framing/Buffer.h index 8b08e60762..2ccad3bd57 100644 --- a/cpp/include/qpid/framing/Buffer.h +++ b/cpp/include/qpid/framing/Buffer.h @@ -1,3 +1,6 @@ +#ifndef QPID_FRAMING_BUFFER_H +#define QPID_FRAMING_BUFFER_H + /* * * Licensed to the Apache Software Foundation (ASF) under one @@ -18,13 +21,12 @@ * under the License. * */ -#include "qpid/framing/amqp_types.h" + #include "qpid/Exception.h" #include "qpid/CommonImportExport.h" -#include <boost/iterator/iterator_facade.hpp> +#include "qpid/sys/IntegerTypes.h" -#ifndef _Buffer_ -#define _Buffer_ +#include <string> namespace qpid { namespace framing { @@ -41,42 +43,18 @@ class QPID_COMMON_CLASS_EXTERN Buffer uint32_t size; char* data; uint32_t position; - uint32_t r_position; public: void checkAvailable(uint32_t count) { if (position + count > size) throw OutOfBounds(); } - /** Buffer input/output iterator. - * Supports using an amqp_0_10::Codec with a framing::Buffer. - */ - class Iterator : public boost::iterator_facade< - Iterator, char, boost::random_access_traversal_tag> - { - public: - Iterator(Buffer& b) : buffer(&b) {} - - private: - friend class boost::iterator_core_access; - char& dereference() const { return buffer->data[buffer->position]; } - void increment() { ++buffer->position; } - bool equal(const Iterator& x) const { return buffer == x.buffer; } - - Buffer* buffer; - }; - - friend class Iterator; - QPID_COMMON_EXTERN Buffer(char* data=0, uint32_t size=0); - QPID_COMMON_EXTERN void record(); - QPID_COMMON_EXTERN void restore(bool reRecord = false); QPID_COMMON_EXTERN void reset(); QPID_COMMON_INLINE_EXTERN uint32_t available() { return size - position; } QPID_COMMON_INLINE_EXTERN uint32_t getSize() { return size; } QPID_COMMON_INLINE_EXTERN uint32_t getPosition() { return position; } QPID_COMMON_INLINE_EXTERN void setPosition(uint32_t p) { position = p; } - QPID_COMMON_INLINE_EXTERN Iterator getIterator() { return Iterator(*this); } QPID_COMMON_INLINE_EXTERN char* getPointer() { return data; } QPID_COMMON_EXTERN void putOctet(uint8_t i); @@ -108,16 +86,16 @@ class QPID_COMMON_CLASS_EXTERN Buffer template <int n> QPID_COMMON_EXTERN void putUInt(uint64_t); - QPID_COMMON_EXTERN void putShortString(const string& s); - QPID_COMMON_EXTERN void putMediumString(const string& s); - QPID_COMMON_EXTERN void putLongString(const string& s); - QPID_COMMON_EXTERN void getShortString(string& s); - QPID_COMMON_EXTERN void getMediumString(string& s); - QPID_COMMON_EXTERN void getLongString(string& s); + QPID_COMMON_EXTERN void putShortString(const std::string& s); + QPID_COMMON_EXTERN void putMediumString(const std::string& s); + QPID_COMMON_EXTERN void putLongString(const std::string& s); + QPID_COMMON_EXTERN void getShortString(std::string& s); + QPID_COMMON_EXTERN void getMediumString(std::string& s); + QPID_COMMON_EXTERN void getLongString(std::string& s); QPID_COMMON_EXTERN void getBin128(uint8_t* b); - QPID_COMMON_EXTERN void putRawData(const string& s); - QPID_COMMON_EXTERN void getRawData(string& s, uint32_t size); + QPID_COMMON_EXTERN void putRawData(const std::string& s); + QPID_COMMON_EXTERN void getRawData(std::string& s, uint32_t size); QPID_COMMON_EXTERN void putRawData(const uint8_t* data, size_t size); QPID_COMMON_EXTERN void getRawData(uint8_t* data, size_t size); diff --git a/cpp/include/qpid/management/Buffer.h b/cpp/include/qpid/management/Buffer.h index c32494b8c0..1ac52bf276 100644 --- a/cpp/include/qpid/management/Buffer.h +++ b/cpp/include/qpid/management/Buffer.h @@ -46,13 +46,12 @@ public: QPID_COMMON_EXTERN Buffer(char* data=0, uint32_t size=0); QPID_COMMON_EXTERN ~Buffer(); - QPID_COMMON_EXTERN void record(); - QPID_COMMON_EXTERN void restore(bool reRecord = false); QPID_COMMON_EXTERN void reset(); QPID_COMMON_EXTERN uint32_t available(); QPID_COMMON_EXTERN uint32_t getSize(); QPID_COMMON_EXTERN uint32_t getPosition(); + QPID_COMMON_EXTERN void setPosition(uint32_t); QPID_COMMON_EXTERN char* getPointer(); QPID_COMMON_EXTERN void putOctet(uint8_t i); diff --git a/cpp/src/qpid/framing/AMQFrame.cpp b/cpp/src/qpid/framing/AMQFrame.cpp index 5b9673f0d0..5e065d598c 100644 --- a/cpp/src/qpid/framing/AMQFrame.cpp +++ b/cpp/src/qpid/framing/AMQFrame.cpp @@ -85,7 +85,7 @@ bool AMQFrame::decode(Buffer& buffer) { if(buffer.available() < frameOverhead()) return false; - buffer.record(); + uint32_t pos = buffer.getPosition(); uint8_t flags = buffer.getOctet(); uint8_t framing_version = (flags & 0xc0) >> 6; @@ -115,7 +115,7 @@ bool AMQFrame::decode(Buffer& buffer) // B,E,b,e flags uint16_t body_size = frame_size - frameOverhead(); if (buffer.available() < body_size){ - buffer.restore(); + buffer.setPosition(pos); return false; } diff --git a/cpp/src/qpid/framing/Buffer.cpp b/cpp/src/qpid/framing/Buffer.cpp index 5a5bc0325e..b71915aeb7 100644 --- a/cpp/src/qpid/framing/Buffer.cpp +++ b/cpp/src/qpid/framing/Buffer.cpp @@ -23,27 +23,17 @@ #include "qpid/Msg.h" #include <string.h> #include <boost/format.hpp> + namespace qpid { namespace framing { +using std::string; + Buffer::Buffer(char* _data, uint32_t _size) : size(_size), data(_data), position(0) { } -void Buffer::record(){ - r_position = position; -} - -void Buffer::restore(bool reRecord){ - uint32_t savedPosition = position; - - position = r_position; - - if (reRecord) - r_position = savedPosition; -} - void Buffer::reset(){ position = 0; } diff --git a/cpp/src/qpid/framing/ProtocolInitiation.cpp b/cpp/src/qpid/framing/ProtocolInitiation.cpp index e617015d64..00ddb55a3b 100644 --- a/cpp/src/qpid/framing/ProtocolInitiation.cpp +++ b/cpp/src/qpid/framing/ProtocolInitiation.cpp @@ -20,6 +20,8 @@ */ #include "qpid/framing/ProtocolInitiation.h" +#include <iostream> + namespace qpid { namespace framing { diff --git a/cpp/src/qpid/management/Buffer.cpp b/cpp/src/qpid/management/Buffer.cpp index 7556b2a243..0ad6e9a851 100644 --- a/cpp/src/qpid/management/Buffer.cpp +++ b/cpp/src/qpid/management/Buffer.cpp @@ -29,12 +29,11 @@ namespace management { Buffer::Buffer(char* data, uint32_t size) : impl(new framing::Buffer(data, size)) {} Buffer::~Buffer() { delete impl; } -void Buffer::record() { impl->record(); } -void Buffer::restore(bool reRecord) { impl->restore(reRecord); } void Buffer::reset() { impl->reset(); } uint32_t Buffer::available() { return impl->available(); } uint32_t Buffer::getSize() { return impl->getSize(); } uint32_t Buffer::getPosition() { return impl->getPosition(); } +void Buffer::setPosition(uint32_t p) { impl->setPosition(p); } char* Buffer::getPointer() { return impl->getPointer(); } void Buffer::putOctet(uint8_t i) { impl->putOctet(i); } void Buffer::putShort(uint16_t i) { impl->putShort(i); } diff --git a/cpp/src/qpid/management/ManagementAgent.cpp b/cpp/src/qpid/management/ManagementAgent.cpp index 062a530706..7d90ed99d0 100644 --- a/cpp/src/qpid/management/ManagementAgent.cpp +++ b/cpp/src/qpid/management/ManagementAgent.cpp @@ -1344,18 +1344,19 @@ void ManagementAgent::handleMethodRequestLH(Buffer& inBuffer, const string& repl outBuffer.putLong (Manageable::STATUS_PARAMETER_INVALID); outBuffer.putMediumString(Manageable::StatusText (Manageable::STATUS_PARAMETER_INVALID)); } - else + else { + uint32_t pos = outBuffer.getPosition(); try { - outBuffer.record(); sys::Mutex::ScopedUnlock u(userLock); string outBuf; iter->second->doMethod(methodName, inArgs, outBuf, userId); outBuffer.putRawData(outBuf); } catch(exception& e) { - outBuffer.restore(); + outBuffer.setPosition(pos);; outBuffer.putLong(Manageable::STATUS_EXCEPTION); outBuffer.putMediumString(e.what()); } + } } outLen = MA_BUFFER_SIZE - outBuffer.available(); @@ -1662,11 +1663,11 @@ void ManagementAgent::handleSchemaResponseLH(Buffer& inBuffer, const string& /*r string packageName; SchemaClassKey key; - inBuffer.record(); + uint32_t pos = inBuffer.getPosition(); inBuffer.getOctet(); inBuffer.getShortString(packageName); key.decode(inBuffer); - inBuffer.restore(); + inBuffer.setPosition(pos);; QPID_LOG(debug, "RECV SchemaResponse class=" << packageName << ":" << key.name << "(" << Uuid(key.hash) << ")" << " seq=" << sequence); @@ -2426,7 +2427,6 @@ size_t ManagementAgent::validateTableSchema(Buffer& inBuffer) uint8_t hash[16]; try { - inBuffer.record(); uint8_t kind = inBuffer.getOctet(); if (kind != ManagementItem::CLASS_KIND_TABLE) return 0; @@ -2468,7 +2468,7 @@ size_t ManagementAgent::validateTableSchema(Buffer& inBuffer) } end = inBuffer.getPosition(); - inBuffer.restore(); // restore original position + inBuffer.setPosition(start); // restore original position return end - start; } @@ -2480,7 +2480,6 @@ size_t ManagementAgent::validateEventSchema(Buffer& inBuffer) uint8_t hash[16]; try { - inBuffer.record(); uint8_t kind = inBuffer.getOctet(); if (kind != ManagementItem::CLASS_KIND_EVENT) return 0; @@ -2507,7 +2506,7 @@ size_t ManagementAgent::validateEventSchema(Buffer& inBuffer) } end = inBuffer.getPosition(); - inBuffer.restore(); // restore original position + inBuffer.setPosition(start); // restore original position return end - start; } |