proxygen
wangle::PipelinedClientDispatcher< Pipeline, Req, Resp > Class Template Reference

#include <ClientDispatcher.h>

Inheritance diagram for wangle::PipelinedClientDispatcher< Pipeline, Req, Resp >:
wangle::ClientDispatcherBase< Pipeline, Req, Resp > wangle::HandlerAdapter< Resp, Req > wangle::Service< Req, Resp > wangle::Handler< Resp, Resp, Req, Req > wangle::HandlerBase< HandlerContext< Resp, Req > >

Public Types

typedef HandlerAdapter< Resp, Req >::Context Context
 
- Public Types inherited from wangle::ClientDispatcherBase< Pipeline, Req, Resp >
typedef HandlerAdapter< Resp, Req >::Context Context
 
- Public Types inherited from wangle::HandlerAdapter< Resp, Req >
typedef Handler< Resp, Resp, Req, Req >::Context Context
 
- Public Types inherited from wangle::Handler< Resp, Resp, Req, Req >
typedef Resp rin
 
typedef Resp rout
 
typedef Req win
 
typedef Req wout
 
typedef HandlerContext< Resp, ReqContext
 

Public Member Functions

void read (Context *, Resp in) override
 
folly::Future< Resp > operator() (Req arg) override
 
- Public Member Functions inherited from wangle::ClientDispatcherBase< Pipeline, Req, Resp >
 ~ClientDispatcherBase () override
 
void setPipeline (Pipeline *pipeline)
 
folly::Future< folly::Unitclose () override
 
folly::Future< folly::Unitclose (Context *ctx) override
 
- Public Member Functions inherited from wangle::HandlerAdapter< Resp, Req >
void read (Context *ctx, Respmsg) override
 
folly::Future< folly::Unitwrite (Context *ctx, Reqmsg) override
 
- Public Member Functions inherited from wangle::Handler< Resp, Resp, Req, Req >
 ~Handler () override=default
 
virtual void readEOF (Context *ctx)
 
virtual void readException (Context *ctx, folly::exception_wrapper e)
 
virtual void transportActive (Context *ctx)
 
virtual void transportInactive (Context *ctx)
 
virtual folly::Future< folly::UnitwriteException (Context *ctx, folly::exception_wrapper e)
 
virtual folly::Future< folly::Unitclose (Context *ctx)
 
- Public Member Functions inherited from wangle::HandlerBase< HandlerContext< Resp, Req > >
virtual ~HandlerBase ()=default
 
virtual void attachPipeline (HandlerContext< Resp, Req > *)
 
virtual void detachPipeline (HandlerContext< Resp, Req > *)
 
HandlerContext< Resp, Req > * getContext ()
 
- Public Member Functions inherited from wangle::Service< Req, Resp >
virtual ~Service ()=default
 
virtual bool isAvailable ()
 

Private Attributes

std::deque< folly::Promise< Resp > > p_
 

Additional Inherited Members

- Static Public Attributes inherited from wangle::Handler< Resp, Resp, Req, Req >
static const HandlerDir dir
 
- Protected Attributes inherited from wangle::ClientDispatcherBase< Pipeline, Req, Resp >
Pipelinepipeline_ {nullptr}
 

Detailed Description

template<typename Pipeline, typename Req, typename Resp = Req>
class wangle::PipelinedClientDispatcher< Pipeline, Req, Resp >

Dispatch a request, satisfying Promise p with the response; the returned Future is satisfied when the response is received. A deque of promises/futures are mantained for pipelining.

Definition at line 100 of file ClientDispatcher.h.

Member Typedef Documentation

template<typename Pipeline , typename Req , typename Resp = Req>
typedef HandlerAdapter<Resp, Req>::Context wangle::PipelinedClientDispatcher< Pipeline, Req, Resp >::Context

Definition at line 104 of file ClientDispatcher.h.

Member Function Documentation

template<typename Pipeline , typename Req , typename Resp = Req>
folly::Future<Resp> wangle::PipelinedClientDispatcher< Pipeline, Req, Resp >::operator() ( Req  arg)
inlineoverridevirtual

Implements wangle::Service< Req, Resp >.

Definition at line 113 of file ClientDispatcher.h.

References f, folly::Promise< T >::getFuture(), folly::gen::move, wangle::ClientDispatcherBase< Pipeline, Req, Resp >::pipeline_, and wangle::Pipeline< R, W >::write().

113  {
114  DCHECK(this->pipeline_);
115 
117  auto f = p.getFuture();
118  p_.push_back(std::move(p));
119  this->pipeline_->write(std::move(arg));
120  return f;
121  }
auto f
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
std::enable_if<!std::is_same< T, folly::Unit >::value, folly::Future< folly::Unit > >::type write(W msg)
Definition: Pipeline-inl.h:235
Future< T > getFuture()
Definition: Promise-inl.h:97
std::deque< folly::Promise< Resp > > p_
template<typename Pipeline , typename Req , typename Resp = Req>
void wangle::PipelinedClientDispatcher< Pipeline, Req, Resp >::read ( Context ,
Resp  in 
)
inlineoverride

Definition at line 106 of file ClientDispatcher.h.

References folly::gen::move.

106  {
107  DCHECK(p_.size() >= 1);
108  auto p = std::move(p_.front());
109  p_.pop_front();
110  p.setValue(std::move(in));
111  }
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
std::deque< folly::Promise< Resp > > p_

Member Data Documentation

template<typename Pipeline , typename Req , typename Resp = Req>
std::deque<folly::Promise<Resp> > wangle::PipelinedClientDispatcher< Pipeline, Req, Resp >::p_
private

Definition at line 124 of file ClientDispatcher.h.


The documentation for this class was generated from the following file: