From: James Sedgwick Date: Tue, 16 Jun 2015 17:31:02 +0000 (-0700) Subject: use Unit in Pipeline X-Git-Tag: v0.47.0~7 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=1137f4b872d19547b2f76874174034ff94060cc0;p=folly.git use Unit in Pipeline Summary: Instead of the one-off Nothing struct Reviewed By: @yfeldblum Differential Revision: D2158621 --- diff --git a/folly/wangle/channel/Handler.h b/folly/wangle/channel/Handler.h index 4228ca42..d0b9edde 100644 --- a/folly/wangle/channel/Handler.h +++ b/folly/wangle/channel/Handler.h @@ -109,8 +109,8 @@ class InboundHandler : public HandlerBase> { typedef Rin rin; typedef Rout rout; - typedef Nothing win; - typedef Nothing wout; + typedef Unit win; + typedef Unit wout; typedef InboundHandlerContext Context; virtual ~InboundHandler() = default; @@ -134,8 +134,8 @@ class OutboundHandler : public HandlerBase> { public: static const HandlerDir dir = HandlerDir::OUT; - typedef Nothing rin; - typedef Nothing rout; + typedef Unit rin; + typedef Unit rout; typedef Win win; typedef Wout wout; typedef OutboundHandlerContext Context; diff --git a/folly/wangle/channel/Pipeline-inl.h b/folly/wangle/channel/Pipeline-inl.h index dde1f39e..f4f7e000 100644 --- a/folly/wangle/channel/Pipeline-inl.h +++ b/folly/wangle/channel/Pipeline-inl.h @@ -59,7 +59,7 @@ std::pair Pipeline::getReadBufferSettings() { template template -typename std::enable_if::value>::type +typename std::enable_if::value>::type Pipeline::read(R msg) { if (!front_) { throw std::invalid_argument("read(): no inbound handler in Pipeline"); @@ -69,7 +69,7 @@ Pipeline::read(R msg) { template template -typename std::enable_if::value>::type +typename std::enable_if::value>::type Pipeline::readEOF() { if (!front_) { throw std::invalid_argument("readEOF(): no inbound handler in Pipeline"); @@ -79,7 +79,7 @@ Pipeline::readEOF() { template template -typename std::enable_if::value>::type +typename std::enable_if::value>::type Pipeline::transportActive() { if (front_) { front_->transportActive(); @@ -88,7 +88,7 @@ Pipeline::transportActive() { template template -typename std::enable_if::value>::type +typename std::enable_if::value>::type Pipeline::transportInactive() { if (front_) { front_->transportInactive(); @@ -97,7 +97,7 @@ Pipeline::transportInactive() { template template -typename std::enable_if::value>::type +typename std::enable_if::value>::type Pipeline::readException(exception_wrapper e) { if (!front_) { throw std::invalid_argument( @@ -108,7 +108,7 @@ Pipeline::readException(exception_wrapper e) { template template -typename std::enable_if::value, Future>::type +typename std::enable_if::value, Future>::type Pipeline::write(W msg) { if (!back_) { throw std::invalid_argument("write(): no outbound handler in Pipeline"); @@ -118,7 +118,7 @@ Pipeline::write(W msg) { template template -typename std::enable_if::value, Future>::type +typename std::enable_if::value, Future>::type Pipeline::close() { if (!back_) { throw std::invalid_argument("close(): no outbound handler in Pipeline"); @@ -250,12 +250,12 @@ H* Pipeline::getHandler(int i) { namespace detail { template -inline void logWarningIfNotNothing(const std::string& warning) { +inline void logWarningIfNotUnit(const std::string& warning) { LOG(WARNING) << warning; } template <> -inline void logWarningIfNotNothing(const std::string& warning) { +inline void logWarningIfNotUnit(const std::string& warning) { // do nothing } @@ -283,12 +283,12 @@ void Pipeline::finalize() { } if (!front_) { - detail::logWarningIfNotNothing( + detail::logWarningIfNotUnit( "No inbound handler in Pipeline, inbound operations will throw " "std::invalid_argument"); } if (!back_) { - detail::logWarningIfNotNothing( + detail::logWarningIfNotUnit( "No outbound handler in Pipeline, outbound operations will throw " "std::invalid_argument"); } diff --git a/folly/wangle/channel/Pipeline.h b/folly/wangle/channel/Pipeline.h index 7138ab1c..85d89d89 100644 --- a/folly/wangle/channel/Pipeline.h +++ b/folly/wangle/channel/Pipeline.h @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -58,17 +59,15 @@ class PipelineBase : public DelayedDestruction { std::shared_ptr transport_; }; -struct Nothing{}; - /* * R is the inbound type, i.e. inbound calls start with pipeline.read(R) * W is the outbound type, i.e. outbound calls start with pipeline.write(W) * - * Use Nothing for one of the types if your pipeline is unidirectional. - * If R is Nothing, read(), readEOF(), and readException() will be disabled. - * If W is Nothing, write() and close() will be disabled. + * Use Unit for one of the types if your pipeline is unidirectional. + * If R is Unit, read(), readEOF(), and readException() will be disabled. + * If W is Unit, write() and close() will be disabled. */ -template +template class Pipeline : public PipelineBase { public: Pipeline(); @@ -81,31 +80,31 @@ class Pipeline : public PipelineBase { std::pair getReadBufferSettings(); template - typename std::enable_if::value>::type + typename std::enable_if::value>::type read(R msg); template - typename std::enable_if::value>::type + typename std::enable_if::value>::type readEOF(); template - typename std::enable_if::value>::type + typename std::enable_if::value>::type readException(exception_wrapper e); template - typename std::enable_if::value>::type + typename std::enable_if::value>::type transportActive(); template - typename std::enable_if::value>::type + typename std::enable_if::value>::type transportInactive(); template - typename std::enable_if::value, Future>::type + typename std::enable_if::value, Future>::type write(W msg); template - typename std::enable_if::value, Future>::type + typename std::enable_if::value, Future>::type close(); template