diff options
Diffstat (limited to 'lib/cpp/src/thrift/transport/THeaderTransport.h')
-rw-r--r-- | lib/cpp/src/thrift/transport/THeaderTransport.h | 31 |
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 |