From 9abb0d69b7613f73e3fe079cfdafabab59bc4ec9 Mon Sep 17 00:00:00 2001 From: Aditya Agarwal Date: Wed, 24 Jan 2007 22:53:54 +0000 Subject: [PATCH] -- Change concept of protocol and transport factory Summary: - Transport factories now wrap around one transport - Protocol factories now wrap around one transport (as opposed to a pair of input/output transports) - TServer now takes input/output transport and protocol factories The motivation for this change is that you could concievably want to use a different protocol or transport for input and output. An example is that incoming data is encoded using binary protocol but outgoing data is encrypted XML (with encryption being done on the transport level). This change should be mostly backwards compatible because the TServer classes have constructors that take a transport factory and use that for both the input and transport factories. The only change might be for anyone who is using the C++ client code directly i.e. instantiating TBinaryProtocol() directly because the constructor now only accepts one transport. Reviewed By: Slee Test Plan: Everything compiles (for both thrift and search). Notes: I am going to make the same changes in all the supported languages after this... git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@664940 13f79535-47bb-0310-9956-ffa450edef68 --- lib/cpp/src/protocol/TBinaryProtocol.cpp | 28 ++--- lib/cpp/src/protocol/TBinaryProtocol.h | 9 +- lib/cpp/src/protocol/TProtocol.h | 24 ++-- lib/cpp/src/server/TNonblockingServer.cpp | 18 ++- lib/cpp/src/server/TNonblockingServer.h | 37 ++++--- lib/cpp/src/server/TServer.h | 103 +++++++++++------- lib/cpp/src/server/TSimpleServer.cpp | 20 ++-- lib/cpp/src/server/TSimpleServer.h | 10 ++ lib/cpp/src/server/TThreadPoolServer.cpp | 36 ++++-- lib/cpp/src/server/TThreadPoolServer.h | 8 ++ .../src/transport/TBufferedRouterTransport.h | 5 +- lib/cpp/src/transport/TTransport.h | 4 +- lib/cpp/src/transport/TTransportUtils.h | 5 +- 13 files changed, 184 insertions(+), 123 deletions(-) diff --git a/lib/cpp/src/protocol/TBinaryProtocol.cpp b/lib/cpp/src/protocol/TBinaryProtocol.cpp index 481012c8..05de1257 100644 --- a/lib/cpp/src/protocol/TBinaryProtocol.cpp +++ b/lib/cpp/src/protocol/TBinaryProtocol.cpp @@ -79,30 +79,30 @@ uint32_t TBinaryProtocol::writeSetEnd() { uint32_t TBinaryProtocol::writeBool(const bool value) { uint8_t tmp = value ? 1 : 0; - outputTransport_->write(&tmp, 1); + trans_->write(&tmp, 1); return 1; } uint32_t TBinaryProtocol::writeByte(const int8_t byte) { - outputTransport_->write((uint8_t*)&byte, 1); + trans_->write((uint8_t*)&byte, 1); return 1; } uint32_t TBinaryProtocol::writeI16(const int16_t i16) { int16_t net = (int16_t)htons(i16); - outputTransport_->write((uint8_t*)&net, 2); + trans_->write((uint8_t*)&net, 2); return 2; } uint32_t TBinaryProtocol::writeI32(const int32_t i32) { int32_t net = (int32_t)htonl(i32); - outputTransport_->write((uint8_t*)&net, 4); + trans_->write((uint8_t*)&net, 4); return 4; } uint32_t TBinaryProtocol::writeI64(const int64_t i64) { int64_t net = (int64_t)htonll(i64); - outputTransport_->write((uint8_t*)&net, 8); + trans_->write((uint8_t*)&net, 8); return 8; } @@ -117,14 +117,14 @@ uint32_t TBinaryProtocol::writeDouble(const double dub) { b[5] = d[2]; b[6] = d[1]; b[7] = d[0]; - outputTransport_->write((uint8_t*)b, 8); + trans_->write((uint8_t*)b, 8); return 8; } uint32_t TBinaryProtocol::writeString(const string& str) { uint32_t result = writeI32(str.size()); - outputTransport_->write((uint8_t*)str.data(), str.size()); + trans_->write((uint8_t*)str.data(), str.size()); return result + str.size(); } @@ -233,21 +233,21 @@ uint32_t TBinaryProtocol::readSetEnd() { uint32_t TBinaryProtocol::readBool(bool& value) { uint8_t b[1]; - inputTransport_->readAll(b, 1); + trans_->readAll(b, 1); value = *(int8_t*)b != 0; return 1; } uint32_t TBinaryProtocol::readByte(int8_t& byte) { uint8_t b[1]; - inputTransport_->readAll(b, 1); + trans_->readAll(b, 1); byte = *(int8_t*)b; return 1; } uint32_t TBinaryProtocol::readI16(int16_t& i16) { uint8_t b[2]; - inputTransport_->readAll(b, 2); + trans_->readAll(b, 2); i16 = *(int16_t*)b; i16 = (int16_t)ntohs(i16); return 2; @@ -255,7 +255,7 @@ uint32_t TBinaryProtocol::readI16(int16_t& i16) { uint32_t TBinaryProtocol::readI32(int32_t& i32) { uint8_t b[4]; - inputTransport_->readAll(b, 4); + trans_->readAll(b, 4); i32 = *(int32_t*)b; i32 = (int32_t)ntohl(i32); return 4; @@ -263,7 +263,7 @@ uint32_t TBinaryProtocol::readI32(int32_t& i32) { uint32_t TBinaryProtocol::readI64(int64_t& i64) { uint8_t b[8]; - inputTransport_->readAll(b, 8); + trans_->readAll(b, 8); i64 = *(int64_t*)b; i64 = (int64_t)ntohll(i64); return 8; @@ -272,7 +272,7 @@ uint32_t TBinaryProtocol::readI64(int64_t& i64) { uint32_t TBinaryProtocol::readDouble(double& dub) { uint8_t b[8]; uint8_t d[8]; - inputTransport_->readAll(b, 8); + trans_->readAll(b, 8); d[0] = b[7]; d[1] = b[6]; d[2] = b[5]; @@ -294,7 +294,7 @@ uint32_t TBinaryProtocol::readString(string& str) { // Use the heap here to prevent stack overflow for v. large strings uint8_t *b = new uint8_t[size]; - inputTransport_->readAll(b, size); + trans_->readAll(b, size); str = string((char*)b, size); delete [] b; diff --git a/lib/cpp/src/protocol/TBinaryProtocol.h b/lib/cpp/src/protocol/TBinaryProtocol.h index de9a836f..c0a1837b 100644 --- a/lib/cpp/src/protocol/TBinaryProtocol.h +++ b/lib/cpp/src/protocol/TBinaryProtocol.h @@ -17,8 +17,8 @@ using namespace boost; */ class TBinaryProtocol : public TProtocol { public: - TBinaryProtocol(shared_ptr in, shared_ptr out) : - TProtocol(in, out) {} + TBinaryProtocol(shared_ptr trans) : + TProtocol(trans) {} ~TBinaryProtocol() {} @@ -137,9 +137,8 @@ class TBinaryProtocolFactory : public TProtocolFactory { virtual ~TBinaryProtocolFactory() {} - std::pair, boost::shared_ptr > getIOProtocols(boost::shared_ptr in, boost::shared_ptr out) { - boost::shared_ptr prot(new TBinaryProtocol(in, out)); - return std::make_pair(prot, prot); + boost::shared_ptr getProtocol(boost::shared_ptr trans) { + return boost::shared_ptr(new TBinaryProtocol(trans)); } }; diff --git a/lib/cpp/src/protocol/TProtocol.h b/lib/cpp/src/protocol/TProtocol.h index 8077b27e..39ee39e4 100644 --- a/lib/cpp/src/protocol/TProtocol.h +++ b/lib/cpp/src/protocol/TProtocol.h @@ -282,22 +282,24 @@ class TProtocol { } } - shared_ptr getInputTransport() { - return inputTransport_; + inline shared_ptr getTransport() { + return trans_; } - shared_ptr getOutputTransport() { - return outputTransport_; + // TODO: remove these two calls, they are for backwards + // compatibility + inline shared_ptr getInputTransport() { + return trans_; + } + inline shared_ptr getOutputTransport() { + return trans_; } protected: - TProtocol(shared_ptr in, shared_ptr out) : - inputTransport_(in), - outputTransport_(out) {} + TProtocol(shared_ptr trans): + trans_(trans) {} - shared_ptr inputTransport_; - - shared_ptr outputTransport_; + shared_ptr trans_; private: TProtocol() {} @@ -312,7 +314,7 @@ class TProtocolFactory { virtual ~TProtocolFactory() {} - virtual std::pair, boost::shared_ptr > getIOProtocols(boost::shared_ptr in, boost::shared_ptr out) = 0; + virtual boost::shared_ptr getProtocol(boost::shared_ptr trans) = 0; }; }}} // facebook::thrift::protocol diff --git a/lib/cpp/src/server/TNonblockingServer.cpp b/lib/cpp/src/server/TNonblockingServer.cpp index 5755514e..25cd7b5a 100644 --- a/lib/cpp/src/server/TNonblockingServer.cpp +++ b/lib/cpp/src/server/TNonblockingServer.cpp @@ -28,17 +28,13 @@ namespace facebook { namespace thrift { namespace server { // Set flags, which also registers the event setFlags(eventFlags); - // TODO: this needs to be replaced by the new version of TTransportFactory - factoryInputTransport_ = (s->getTransportFactory()->getIOTransports(inputTransport_)).first; - // factoryOutputTransport_ = (transportFactory->getIOTransports(outputTransport_)).first; + // get input/transports + factoryInputTransport_ = s->getInputTransportFactory()->getTransport(inputTransport_); + factoryOutputTransport_ = s->getOutputTransportFactory()->getTransport(outputTransport_); // Create protocol - std::pair,shared_ptr > iop; - iop = s->getProtocolFactory()->getIOProtocols(factoryInputTransport_ , - outputTransport_); - inputProtocol_ = iop.first; - outputProtocol_ = iop.second; - + inputProtocol_ = s->getInputProtocolFactory()->getProtocol(factoryInputTransport_); + outputProtocol_ = s->getOutputProtocolFactory()->getProtocol(factoryOutputTransport_); } void TConnection::workSocket() { @@ -353,7 +349,7 @@ void TConnection::close() { // close any factory produced transports factoryInputTransport_->close(); - // factoryOutputTransport_->close(); + factoryOutputTransport_->close(); // Give this object back to the server that owns it server_->returnConnection(this); @@ -366,7 +362,7 @@ void TConnection::close() { TConnection* TNonblockingServer::createConnection(int socket, short flags) { // Check the stack if (connectionStack_.empty()) { - return new TConnection(socket, flags, this, this->getTransportFactory()); + return new TConnection(socket, flags, this); } else { TConnection* result = connectionStack_.top(); connectionStack_.pop(); diff --git a/lib/cpp/src/server/TNonblockingServer.h b/lib/cpp/src/server/TNonblockingServer.h index 4ea3fa31..08ecec6e 100644 --- a/lib/cpp/src/server/TNonblockingServer.h +++ b/lib/cpp/src/server/TNonblockingServer.h @@ -60,19 +60,31 @@ class TNonblockingServer : public TServer { TNonblockingServer(shared_ptr processor, shared_ptr protocolFactory, int port) : - TServer(processor, protocolFactory), + TServer(processor), serverSocket_(0), port_(port), - frameResponses_(true) {} + frameResponses_(true) { + setInputTransportFactory(shared_ptr(new TTransportFactory())); + setOutputTransportFactory(shared_ptr(new TTransportFactory())); + setInputProtocolFactory(protocolFactory); + setOutputProtocolFactory(protocolFactory); + } - TNonblockingServer(shared_ptr processor, - shared_ptr protocolFactory, - shared_ptr transportFactory, + TNonblockingServer(shared_ptr processor, + shared_ptr inputTransportFactory, + shared_ptr outputTransportFactory, + shared_ptr inputProtocolFactory, + shared_ptr outputProtocolFactory, int port) : - TServer(processor, protocolFactory, transportFactory), + TServer(processor), serverSocket_(0), port_(port), - frameResponses_(true) {} + frameResponses_(true) { + setInputTransportFactory(inputTransportFactory); + setOutputTransportFactory(outputTransportFactory); + setInputProtocolFactory(inputProtocolFactory); + setOutputProtocolFactory(outputProtocolFactory); + } ~TNonblockingServer() {} @@ -175,13 +187,13 @@ class TConnection { // extra transport generated by transport factory (e.g. BufferedRouterTransport) shared_ptr factoryInputTransport_; - // shared_ptr factoryOutputTransport_; - - // Protocol encoder - shared_ptr outputProtocol_; + shared_ptr factoryOutputTransport_; // Protocol decoder shared_ptr inputProtocol_; + + // Protocol encoder + shared_ptr outputProtocol_; // Go into read mode void setRead() { @@ -205,8 +217,7 @@ class TConnection { public: // Constructor - TConnection(int socket, short eventFlags, TNonblockingServer *s, - shared_ptr transportFactory) { + TConnection(int socket, short eventFlags, TNonblockingServer *s) { readBuffer_ = (uint8_t*)malloc(1024); if (readBuffer_ == NULL) { throw new facebook::thrift::TException("Out of memory."); diff --git a/lib/cpp/src/server/TServer.h b/lib/cpp/src/server/TServer.h index b9f4fca8..ad9c291d 100644 --- a/lib/cpp/src/server/TServer.h +++ b/lib/cpp/src/server/TServer.h @@ -38,73 +38,92 @@ public: return serverTransport_; } - shared_ptr getTransportFactory() { - return transportFactory_; + shared_ptr getInputTransportFactory() { + return inputTransportFactory_; + } + + shared_ptr getOutputTransportFactory() { + return outputTransportFactory_; } - shared_ptr getProtocolFactory() { - return protocolFactory_; + shared_ptr getInputProtocolFactory() { + return inputProtocolFactory_; } + shared_ptr getOutputProtocolFactory() { + return outputProtocolFactory_; + } protected: + TServer(shared_ptr processor): + processor_(processor) { + setInputTransportFactory(shared_ptr(new TTransportFactory())); + setOutputTransportFactory(shared_ptr(new TTransportFactory())); + setInputProtocolFactory(shared_ptr(new TBinaryProtocolFactory())); + setOutputProtocolFactory(shared_ptr(new TBinaryProtocolFactory())); + } + + TServer(shared_ptr processor, + shared_ptr serverTransport): + processor_(processor), + serverTransport_(serverTransport) { + setInputTransportFactory(shared_ptr(new TTransportFactory())); + setOutputTransportFactory(shared_ptr(new TTransportFactory())); + setInputProtocolFactory(shared_ptr(new TBinaryProtocolFactory())); + setOutputProtocolFactory(shared_ptr(new TBinaryProtocolFactory())); + } + TServer(shared_ptr processor, shared_ptr serverTransport, shared_ptr transportFactory, - shared_ptr protocolFactory) : + shared_ptr protocolFactory): processor_(processor), serverTransport_(serverTransport), - transportFactory_(transportFactory), - protocolFactory_(protocolFactory) {} + inputTransportFactory_(transportFactory), + outputTransportFactory_(transportFactory), + inputProtocolFactory_(protocolFactory), + outputProtocolFactory_(protocolFactory) {} TServer(shared_ptr processor, shared_ptr serverTransport, - shared_ptr transportFactory) : + shared_ptr inputTransportFactory, + shared_ptr outputTransportFactory, + shared_ptr inputProtocolFactory, + shared_ptr outputProtocolFactory): processor_(processor), serverTransport_(serverTransport), - transportFactory_(transportFactory) { - protocolFactory_ = boost::shared_ptr(new TBinaryProtocolFactory()); - } + inputTransportFactory_(inputTransportFactory), + outputTransportFactory_(outputTransportFactory), + inputProtocolFactory_(inputProtocolFactory), + outputProtocolFactory_(outputProtocolFactory) {} - TServer(shared_ptr processor, - shared_ptr serverTransport) : - processor_(processor), - serverTransport_(serverTransport) { - transportFactory_ = boost::shared_ptr(new TTransportFactory()); - protocolFactory_ = boost::shared_ptr(new TBinaryProtocolFactory()); + + // Class variables + shared_ptr processor_; + shared_ptr serverTransport_; + + shared_ptr inputTransportFactory_; + shared_ptr outputTransportFactory_; + + shared_ptr inputProtocolFactory_; + shared_ptr outputProtocolFactory_; + + void setInputTransportFactory(shared_ptr inputTransportFactory) { + inputTransportFactory_ = inputTransportFactory; } - TServer(shared_ptr processor) : - processor_(processor) { - transportFactory_ = boost::shared_ptr(new TTransportFactory()); - protocolFactory_ = boost::shared_ptr(new TBinaryProtocolFactory()); + void setOutputTransportFactory(shared_ptr outputTransportFactory) { + outputTransportFactory_ = outputTransportFactory; } - TServer(shared_ptr processor, - shared_ptr transportFactory) : - processor_(processor), - transportFactory_(transportFactory) { - protocolFactory_ = boost::shared_ptr(new TBinaryProtocolFactory()); + void setInputProtocolFactory(shared_ptr inputProtocolFactory) { + inputProtocolFactory_ = inputProtocolFactory; } - TServer(shared_ptr processor, - shared_ptr protocolFactory) : - processor_(processor) { - transportFactory_ = boost::shared_ptr(new TTransportFactory()); - protocolFactory_ = protocolFactory; + void setOutputProtocolFactory(shared_ptr outputProtocolFactory) { + outputProtocolFactory_ = outputProtocolFactory; } - TServer(shared_ptr processor, - shared_ptr protocolFactory, - shared_ptr transportFactory): - processor_(processor), - transportFactory_(transportFactory), - protocolFactory_(protocolFactory) {} - - shared_ptr processor_; - shared_ptr serverTransport_; - shared_ptr transportFactory_; - shared_ptr protocolFactory_; }; }}} // facebook::thrift::server diff --git a/lib/cpp/src/server/TSimpleServer.cpp b/lib/cpp/src/server/TSimpleServer.cpp index 8d62bf99..1e7e7fbc 100644 --- a/lib/cpp/src/server/TSimpleServer.cpp +++ b/lib/cpp/src/server/TSimpleServer.cpp @@ -14,8 +14,10 @@ namespace facebook { namespace thrift { namespace server { void TSimpleServer::serve() { shared_ptr client; - pair,shared_ptr > iot; - pair,shared_ptr > iop; + shared_ptr inputTransport; + shared_ptr outputTransport; + shared_ptr inputProtocol; + shared_ptr outputProtocol; try { // Start the server listening @@ -29,12 +31,14 @@ void TSimpleServer::serve() { try { while (true) { client = serverTransport_->accept(); - iot = transportFactory_->getIOTransports(client); - iop = protocolFactory_->getIOProtocols(iot.first, iot.second); + inputTransport = inputTransportFactory_->getTransport(client); + outputTransport = outputTransportFactory_->getTransport(client); + inputProtocol = inputProtocolFactory_->getProtocol(inputTransport); + outputProtocol = outputProtocolFactory_->getProtocol(outputTransport); try { - while (processor_->process(iop.first, iop.second)) { + while (processor_->process(inputProtocol, outputProtocol)) { // Peek ahead, is the remote side closed? - if (!iot.first->peek()) { + if (!inputTransport->peek()) { break; } } @@ -43,8 +47,8 @@ void TSimpleServer::serve() { } catch (TException& tx) { cerr << "TSimpleServer exception: " << tx.what() << endl; } - iot.first->close(); - iot.second->close(); + inputTransport->close(); + outputTransport->close(); client->close(); } } catch (TTransportException& ttx) { diff --git a/lib/cpp/src/server/TSimpleServer.h b/lib/cpp/src/server/TSimpleServer.h index 64705197..cf3ed104 100644 --- a/lib/cpp/src/server/TSimpleServer.h +++ b/lib/cpp/src/server/TSimpleServer.h @@ -21,6 +21,16 @@ class TSimpleServer : public TServer { shared_ptr transportFactory, shared_ptr protocolFactory) : TServer(processor, serverTransport, transportFactory, protocolFactory) {} + + TSimpleServer(shared_ptr processor, + shared_ptr serverTransport, + shared_ptr inputTransportFactory, + shared_ptr outputTransportFactory, + shared_ptr inputProtocolFactory, + shared_ptr outputProtocolFactory): + TServer(processor, serverTransport, + inputTransportFactory, outputTransportFactory, + inputProtocolFactory, outputProtocolFactory) {} ~TSimpleServer() {} diff --git a/lib/cpp/src/server/TThreadPoolServer.cpp b/lib/cpp/src/server/TThreadPoolServer.cpp index 357152bc..2f85c8bb 100644 --- a/lib/cpp/src/server/TThreadPoolServer.cpp +++ b/lib/cpp/src/server/TThreadPoolServer.cpp @@ -29,7 +29,7 @@ public: void run() { try { while (processor_->process(input_, output_)) { - if (!input_->getInputTransport()->peek()) { + if (!input_->getTransport()->peek()) { break; } } @@ -40,8 +40,8 @@ public: } catch (...) { cerr << "TThreadPoolServer uncaught exception." << endl; } - input_->getInputTransport()->close(); - output_->getOutputTransport()->close(); + input_->getTransport()->close(); + output_->getTransport()->close(); } private: @@ -55,19 +55,31 @@ TThreadPoolServer::TThreadPoolServer(shared_ptr processor, shared_ptr serverTransport, shared_ptr transportFactory, shared_ptr protocolFactory, - shared_ptr threadManager) : TServer(processor, serverTransport, transportFactory, protocolFactory), - threadManager_(threadManager) { -} + threadManager_(threadManager) {} + +TThreadPoolServer::TThreadPoolServer(shared_ptr processor, + shared_ptr serverTransport, + shared_ptr inputTransportFactory, + shared_ptr outputTransportFactory, + shared_ptr inputProtocolFactory, + shared_ptr outputProtocolFactory, + shared_ptr threadManager) : + TServer(processor, serverTransport, inputTransportFactory, outputTransportFactory, + inputProtocolFactory, outputProtocolFactory), + threadManager_(threadManager) {} + TThreadPoolServer::~TThreadPoolServer() {} void TThreadPoolServer::serve() { shared_ptr client; - pair,shared_ptr > iot; - pair,shared_ptr > iop; + shared_ptr inputTransport; + shared_ptr outputTransport; + shared_ptr inputProtocol; + shared_ptr outputProtocol; try { // Start the server listening @@ -82,11 +94,13 @@ void TThreadPoolServer::serve() { // Fetch client from server client = serverTransport_->accept(); // Make IO transports - iot = transportFactory_->getIOTransports(client); - iop = protocolFactory_->getIOProtocols(iot.first, iot.second); + inputTransport = inputTransportFactory_->getTransport(client); + outputTransport = outputTransportFactory_->getTransport(client); + inputProtocol = inputProtocolFactory_->getProtocol(inputTransport); + outputProtocol = outputProtocolFactory_->getProtocol(outputTransport); // Add to threadmanager pool - threadManager_->add(shared_ptr(new TThreadPoolServer::Task(processor_, iop.first, iop.second))); + threadManager_->add(shared_ptr(new TThreadPoolServer::Task(processor_, inputProtocol, outputProtocol))); } catch (TTransportException& ttx) { break; } diff --git a/lib/cpp/src/server/TThreadPoolServer.h b/lib/cpp/src/server/TThreadPoolServer.h index 5c5899e9..aabd6861 100644 --- a/lib/cpp/src/server/TThreadPoolServer.h +++ b/lib/cpp/src/server/TThreadPoolServer.h @@ -24,6 +24,14 @@ public: shared_ptr protocolFactory, shared_ptr threadManager); + TThreadPoolServer(shared_ptr processor, + shared_ptr serverTransport, + shared_ptr inputTransportFactory, + shared_ptr outputTransportFactory, + shared_ptr inputProtocolFactory, + shared_ptr outputProtocolFactory, + shared_ptr threadManager); + virtual ~TThreadPoolServer(); virtual void serve(); diff --git a/lib/cpp/src/transport/TBufferedRouterTransport.h b/lib/cpp/src/transport/TBufferedRouterTransport.h index b2e4d4fa..add31072 100644 --- a/lib/cpp/src/transport/TBufferedRouterTransport.h +++ b/lib/cpp/src/transport/TBufferedRouterTransport.h @@ -117,9 +117,8 @@ class TBufferedRouterTransportFactory : public TTransportFactory { /** * Wraps the transport into a buffered one. */ - virtual std::pair, boost::shared_ptr > getIOTransports(boost::shared_ptr trans) { - boost::shared_ptr buffered(new TBufferedRouterTransport(trans, rTrans_)); - return std::make_pair(buffered, buffered); + virtual boost::shared_ptr getTransport(boost::shared_ptr trans) { + return boost::shared_ptr(new TBufferedRouterTransport(trans, rTrans_)); } private: diff --git a/lib/cpp/src/transport/TTransport.h b/lib/cpp/src/transport/TTransport.h index 5e4ae6bd..02dd89c0 100644 --- a/lib/cpp/src/transport/TTransport.h +++ b/lib/cpp/src/transport/TTransport.h @@ -155,8 +155,8 @@ class TTransportFactory { /** * Default implementation does nothing, just returns the transport given. */ - virtual std::pair, boost::shared_ptr > getIOTransports(boost::shared_ptr trans) { - return std::make_pair(trans, trans); + virtual boost::shared_ptr getTransport(boost::shared_ptr trans) { + return trans; } }; diff --git a/lib/cpp/src/transport/TTransportUtils.h b/lib/cpp/src/transport/TTransportUtils.h index 427cc0e7..79a137c4 100644 --- a/lib/cpp/src/transport/TTransportUtils.h +++ b/lib/cpp/src/transport/TTransportUtils.h @@ -122,9 +122,8 @@ class TBufferedTransportFactory : public TTransportFactory { /** * Wraps the transport into a buffered one. */ - virtual std::pair, boost::shared_ptr > getIOTransports(boost::shared_ptr trans) { - boost::shared_ptr buffered(new TBufferedTransport(trans)); - return std::make_pair(buffered, buffered); + virtual boost::shared_ptr getTransport(boost::shared_ptr trans) { + return boost::shared_ptr(new TBufferedTransport(trans)); } }; -- 2.17.1