proxygen
ClientIPRoutingDataHandler Class Reference
Inheritance diagram for ClientIPRoutingDataHandler:
wangle::RoutingDataHandler< std::string > wangle::HandlerAdapter< R, W > wangle::Handler< R, R, W, W > wangle::HandlerBase< HandlerContext< R, W > >

Public Member Functions

 ClientIPRoutingDataHandler (uint64_t connId, Callback *cob)
 
bool parseRoutingData (folly::IOBufQueue &bufQueue, RoutingData &routingData) override
 
- Public Member Functions inherited from wangle::RoutingDataHandler< std::string >
 RoutingDataHandler (uint64_t connId, Callback *cob)
 
 ~RoutingDataHandler () override
 
void read (Context *ctx, folly::IOBufQueue &q) override
 
void readEOF (Context *ctx) override
 
void readException (Context *ctx, folly::exception_wrapper ex) override
 
- Public Member Functions inherited from wangle::HandlerAdapter< R, W >
void read (Context *ctx, R msg) override
 
folly::Future< folly::Unitwrite (Context *ctx, W msg) override
 
- Public Member Functions inherited from wangle::Handler< R, R, W, W >
 ~Handler () override=default
 
virtual void read (Context *ctx, Rmsg)=0
 
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::Unitwrite (Context *ctx, Wmsg)=0
 
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< R, W > >
virtual ~HandlerBase ()=default
 
virtual void attachPipeline (HandlerContext< R, W > *)
 
virtual void detachPipeline (HandlerContext< R, W > *)
 
HandlerContext< R, W > * getContext ()
 

Additional Inherited Members

- Public Types inherited from wangle::HandlerAdapter< R, W >
typedef Handler< R, R, W, W >::Context Context
 
- Public Types inherited from wangle::Handler< R, R, W, W >
typedef R rin
 
typedef R rout
 
typedef W win
 
typedef W wout
 
typedef HandlerContext< R, W > Context
 
- Static Public Attributes inherited from wangle::Handler< R, R, W, W >
static const HandlerDir dir
 

Detailed Description

Simple RoutingDataHandler that sets the client IP as the routing data. All requests from the same client IP will be hashed to the same worker thread.

Definition at line 101 of file BroadcastProxy.cpp.

Constructor & Destructor Documentation

ClientIPRoutingDataHandler::ClientIPRoutingDataHandler ( uint64_t  connId,
Callback *  cob 
)
inline

Member Function Documentation

bool ClientIPRoutingDataHandler::parseRoutingData ( folly::IOBufQueue bufQueue,
RoutingData &  routingData 
)
inlineoverridevirtual

Parse the routing data from bufQueue into routingData. This will be used to compute the hash for choosing the worker thread.

Bytes that need to be passed into the child pipeline (such as additional bytes left in bufQueue not used for parsing) should be moved into RoutingData::bufQueue.

Returns
bool - True on success, false if bufQueue doesn't have sufficient bytes for parsing

Implements wangle::RoutingDataHandler< std::string >.

Definition at line 106 of file BroadcastProxy.cpp.

References folly::INFO.

107  {
108  auto transportInfo = getContext()->getPipeline()->getTransportInfo();
109  const auto& clientIP = transportInfo->remoteAddr->getAddressStr();
110  LOG(INFO) << "Using client IP " << clientIP
111  << " as routing data to hash to a worker thread";
112 
113  routingData.routingData = clientIP;
114  routingData.bufQueue.append(bufQueue);
115  return true;
116  }
HandlerContext< R, W > * getContext()
Definition: Handler.h:34
virtual PipelineBase * getPipeline()=0
std::shared_ptr< TransportInfo > getTransportInfo()
Definition: Pipeline.cpp:45

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