QPID-4004: Cruft in qpid::framing::Buffer class should be removed

git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1339358 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/qpid/cpp/include/qpid/framing/Buffer.h b/qpid/cpp/include/qpid/framing/Buffer.h
index 8b08e60..2ccad3b 100644
--- a/qpid/cpp/include/qpid/framing/Buffer.h
+++ b/qpid/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 @@
     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 @@
     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/qpid/cpp/include/qpid/management/Buffer.h b/qpid/cpp/include/qpid/management/Buffer.h
index c32494b..1ac52bf 100644
--- a/qpid/cpp/include/qpid/management/Buffer.h
+++ b/qpid/cpp/include/qpid/management/Buffer.h
@@ -46,13 +46,12 @@
     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/qpid/cpp/src/qpid/framing/AMQFrame.cpp b/qpid/cpp/src/qpid/framing/AMQFrame.cpp
index 5b9673f..5e065d5 100644
--- a/qpid/cpp/src/qpid/framing/AMQFrame.cpp
+++ b/qpid/cpp/src/qpid/framing/AMQFrame.cpp
@@ -85,7 +85,7 @@
 {    
     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 @@
     // 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/qpid/cpp/src/qpid/framing/Buffer.cpp b/qpid/cpp/src/qpid/framing/Buffer.cpp
index 5a5bc03..b71915a 100644
--- a/qpid/cpp/src/qpid/framing/Buffer.cpp
+++ b/qpid/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/qpid/cpp/src/qpid/framing/ProtocolInitiation.cpp b/qpid/cpp/src/qpid/framing/ProtocolInitiation.cpp
index e617015..00ddb55 100644
--- a/qpid/cpp/src/qpid/framing/ProtocolInitiation.cpp
+++ b/qpid/cpp/src/qpid/framing/ProtocolInitiation.cpp
@@ -20,6 +20,8 @@
  */
 #include "qpid/framing/ProtocolInitiation.h"
 
+#include <iostream>
+
 namespace qpid {
 namespace framing {
 
diff --git a/qpid/cpp/src/qpid/management/Buffer.cpp b/qpid/cpp/src/qpid/management/Buffer.cpp
index 7556b2a..0ad6e9a 100644
--- a/qpid/cpp/src/qpid/management/Buffer.cpp
+++ b/qpid/cpp/src/qpid/management/Buffer.cpp
@@ -29,12 +29,11 @@
 
 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/qpid/cpp/src/qpid/management/ManagementAgent.cpp b/qpid/cpp/src/qpid/management/ManagementAgent.cpp
index 062a530..7d90ed9 100644
--- a/qpid/cpp/src/qpid/management/ManagementAgent.cpp
+++ b/qpid/cpp/src/qpid/management/ManagementAgent.cpp
@@ -1344,18 +1344,19 @@
             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 @@
     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 @@
     uint8_t  hash[16];
 
     try {
-        inBuffer.record();
         uint8_t kind = inBuffer.getOctet();
         if (kind != ManagementItem::CLASS_KIND_TABLE)
             return 0;
@@ -2468,7 +2468,7 @@
     }
 
     end = inBuffer.getPosition();
-    inBuffer.restore(); // restore original position
+    inBuffer.setPosition(start); // restore original position
     return end - start;
 }
 
@@ -2480,7 +2480,6 @@
     uint8_t  hash[16];
 
     try {
-        inBuffer.record();
         uint8_t kind = inBuffer.getOctet();
         if (kind != ManagementItem::CLASS_KIND_EVENT)
             return 0;
@@ -2507,7 +2506,7 @@
     }
 
     end = inBuffer.getPosition();
-    inBuffer.restore(); // restore original position
+    inBuffer.setPosition(start); // restore original position
     return end - start;
 }