summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorAndrew Stitcher <astitcher@apache.org>2012-05-16 20:58:25 +0000
committerAndrew Stitcher <astitcher@apache.org>2012-05-16 20:58:25 +0000
commit1a49c40c0612de5704fb88c657d3b5d45ac4a445 (patch)
tree4ff5b78ec29f68262b9ded57a873b551172b3d2c /cpp
parent9950088c77895a83f06620d9e96bb478c39401e2 (diff)
downloadqpid-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.h50
-rw-r--r--cpp/include/qpid/management/Buffer.h3
-rw-r--r--cpp/src/qpid/framing/AMQFrame.cpp4
-rw-r--r--cpp/src/qpid/framing/Buffer.cpp16
-rw-r--r--cpp/src/qpid/framing/ProtocolInitiation.cpp2
-rw-r--r--cpp/src/qpid/management/Buffer.cpp3
-rw-r--r--cpp/src/qpid/management/ManagementAgent.cpp17
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;
}