proxygen
wangle::MultiplexServerDispatcher< Req, Resp > Class Template Reference

#include <ServerDispatcher.h>

Inheritance diagram for wangle::MultiplexServerDispatcher< Req, Resp >:
wangle::HandlerAdapter< Req, Resp > wangle::Handler< Req, Req, Resp, Resp > wangle::HandlerBase< HandlerContext< Req, Resp > >

Public Types

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

Public Member Functions

 MultiplexServerDispatcher (Service< Req, Resp > *service)
 
void read (Context *ctx, Req in) override
 
- Public Member Functions inherited from wangle::HandlerAdapter< Req, Resp >
void read (Context *ctx, Reqmsg) override
 
folly::Future< folly::Unitwrite (Context *ctx, Respmsg) override
 
- Public Member Functions inherited from wangle::Handler< Req, Req, Resp, Resp >
 ~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< Req, Resp > >
virtual ~HandlerBase ()=default
 
virtual void attachPipeline (HandlerContext< Req, Resp > *)
 
virtual void detachPipeline (HandlerContext< Req, Resp > *)
 
HandlerContext< Req, Resp > * getContext ()
 

Private Attributes

Service< Req, Resp > * service_
 

Additional Inherited Members

- Static Public Attributes inherited from wangle::Handler< Req, Req, Resp, Resp >
static const HandlerDir dir
 

Detailed Description

template<typename Req, typename Resp = Req>
class wangle::MultiplexServerDispatcher< Req, Resp >

Dispatch requests from pipeline as they come in. Concurrent requests are assumed to have sequence id's that are taken care of by the pipeline. Unlike a multiplexed client dispatcher, a multiplexed server dispatcher needs no state, and the sequence id's can just be copied from the request to the response in the pipeline.

Definition at line 94 of file ServerDispatcher.h.

Member Typedef Documentation

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

Definition at line 97 of file ServerDispatcher.h.

Constructor & Destructor Documentation

template<typename Req , typename Resp = Req>
wangle::MultiplexServerDispatcher< Req, Resp >::MultiplexServerDispatcher ( Service< Req, Resp > *  service)
inlineexplicit

Definition at line 99 of file ServerDispatcher.h.

100  : service_(service) {}

Member Function Documentation

template<typename Req , typename Resp = Req>
void wangle::MultiplexServerDispatcher< Req, Resp >::read ( Context ctx,
Req  in 
)
inlineoverride

Definition at line 102 of file ServerDispatcher.h.

References folly::gen::move.

102  {
103  (*service_)(std::move(in)).thenValue([ctx](Resp resp) {
104  ctx->fireWrite(std::move(resp));
105  });
106  }
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567

Member Data Documentation

template<typename Req , typename Resp = Req>
Service<Req, Resp>* wangle::MultiplexServerDispatcher< Req, Resp >::service_
private

Definition at line 109 of file ServerDispatcher.h.


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