summaryrefslogtreecommitdiff
path: root/lib/cpp/src/thrift/transport/THeaderTransport.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/cpp/src/thrift/transport/THeaderTransport.h')
-rw-r--r--lib/cpp/src/thrift/transport/THeaderTransport.h31
1 files changed, 7 insertions, 24 deletions
diff --git a/lib/cpp/src/thrift/transport/THeaderTransport.h b/lib/cpp/src/thrift/transport/THeaderTransport.h
index 94135ea5c..a1256326e 100644
--- a/lib/cpp/src/thrift/transport/THeaderTransport.h
+++ b/lib/cpp/src/thrift/transport/THeaderTransport.h
@@ -22,6 +22,7 @@
#include <bitset>
#include <vector>
+#include <stdexcept>
#include <string>
#include <map>
@@ -69,7 +70,7 @@ public:
/// Use default buffer sizes.
explicit THeaderTransport(const boost::shared_ptr<TTransport>& transport)
- : transport_(transport),
+ : TVirtualTransport(transport),
outTransport_(transport),
protoId(T_COMPACT_PROTOCOL),
clientType(THRIFT_HEADER_CLIENT_TYPE),
@@ -77,12 +78,13 @@ public:
flags(0),
tBufSize_(0),
tBuf_(NULL) {
+ if (!transport_) throw std::invalid_argument("transport is empty");
initBuffers();
}
THeaderTransport(const boost::shared_ptr<TTransport> inTransport,
const boost::shared_ptr<TTransport> outTransport)
- : transport_(inTransport),
+ : TVirtualTransport(inTransport),
outTransport_(outTransport),
protoId(T_COMPACT_PROTOCOL),
clientType(THRIFT_HEADER_CLIENT_TYPE),
@@ -90,34 +92,16 @@ public:
flags(0),
tBufSize_(0),
tBuf_(NULL) {
+ if (!transport_) throw std::invalid_argument("inTransport is empty");
+ if (!outTransport_) throw std::invalid_argument("outTransport is empty");
initBuffers();
}
- void open() { transport_->open(); }
-
- bool isOpen() { return transport_->isOpen(); }
-
- bool peek() { return (this->rBase_ < this->rBound_) || transport_->peek(); }
-
- void close() {
- flush();
- transport_->close();
- }
-
virtual uint32_t readSlow(uint8_t* buf, uint32_t len);
- virtual uint32_t readAll(uint8_t* buf, uint32_t len);
virtual void flush();
void resizeTransformBuffer(uint32_t additionalSize = 0);
- boost::shared_ptr<TTransport> getUnderlyingTransport() { return transport_; }
-
- /*
- * TVirtualTransport provides a default implementation of readAll().
- * We want to use the TBufferBase version instead.
- */
- using TBufferBase::readAll;
-
uint16_t getProtocolId() const;
void setProtocolId(uint16_t protoId) { this->protoId = protoId; }
@@ -191,7 +175,7 @@ protected:
* Returns true if a frame was read successfully, or false on EOF.
* (Raises a TTransportException if EOF occurs after a partial frame.)
*/
- bool readFrame(uint32_t minFrameSize);
+ virtual bool readFrame();
void ensureReadBuffer(uint32_t sz);
uint32_t getWriteBytes();
@@ -201,7 +185,6 @@ protected:
setWriteBuffer(wBuf_.get(), wBufSize_);
}
- boost::shared_ptr<TTransport> transport_;
boost::shared_ptr<TTransport> outTransport_;
// 0 and 16th bits must be 0 to differentiate from framed & unframed