THRIFT-926. cpp: Let TMemoryBuffer::resetBuffer() set size of self-allocated buffer
authorDavid Reiss <dreiss@apache.org>
Wed, 6 Oct 2010 17:10:51 +0000 (17:10 +0000)
committerDavid Reiss <dreiss@apache.org>
Wed, 6 Oct 2010 17:10:51 +0000 (17:10 +0000)
Although there is a constructor that allows a TMemoryBuffer to be
created with an internally-allocated buffer of a desired size, there was
no way for resetBuffer to obtain analogous behavior. This change causes
the appropriate constructor to be used.

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005168 13f79535-47bb-0310-9956-ffa450edef68

lib/cpp/src/transport/TBufferTransports.h

index 932d3bf..f6d52d5 100644 (file)
@@ -623,6 +623,15 @@ class TMemoryBuffer : public TVirtualTransport<TMemoryBuffer, TBufferBase> {
     // Our old self gets destroyed.
   }
 
+  /// See constructor documentation.
+  void resetBuffer(uint32_t sz) {
+    // Construct the new buffer.
+    TMemoryBuffer new_buffer(sz);
+    // Move it into ourself.
+    this->swap(new_buffer);
+    // Our old self gets destroyed.
+  }    
+
   std::string readAsString(uint32_t len) {
     std::string str;
     (void)readAppendToString(str, len);