proxygen
HTTPDownstreamSession.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015-present, Facebook, Inc.
3  * All rights reserved.
4  *
5  * This source code is licensed under the BSD-style license found in the
6  * LICENSE file in the root directory of this source tree. An additional grant
7  * of patent rights can be found in the PATENTS file in the same directory.
8  *
9  */
10 #pragma once
11 
14 
15 namespace proxygen {
16 
17 class HTTPSessionStats;
18 class HTTPDownstreamSession final: public HTTPSession {
19  public:
29  const WheelTimerInstance& timeout,
33  HTTPSessionController* controller,
34  std::unique_ptr<HTTPCodec> codec,
35  const wangle::TransportInfo& tinfo,
36  InfoCallback* infoCallback):
37  HTTPSession(timeout, std::move(sock), localAddr, peerAddr,
38  CHECK_NOTNULL(controller), std::move(codec), tinfo,
39  infoCallback) {
41  }
42 
43  // allows using HTTPDownstreamSession with HHWheelTimer when it is not shared
45  folly::HHWheelTimer* timer,
49  HTTPSessionController* controller,
50  std::unique_ptr<HTTPCodec> codec,
51  const wangle::TransportInfo& tinfo,
52  InfoCallback* infoCallback):
53  HTTPDownstreamSession(WheelTimerInstance(timer), std::move(sock), localAddr,
54  peerAddr,CHECK_NOTNULL(controller), std::move(codec), tinfo,
55  infoCallback) {
56  }
57 
58  void startNow() override;
59 
60  private:
61  ~HTTPDownstreamSession() override;
62 
66  void setupOnHeadersComplete(HTTPTransaction* txn, HTTPMessage* msg) override;
67 
73  HTTPTransaction* txn) override;
74 
78  void onHeadersSent(const HTTPMessage& headers,
79  bool codecWasReusable) override;
80 
81  bool allTransactionsStarted() const override;
82 
85  const std::string& protocolString,
86  HTTPMessage& msg) override;
87 
88 
89  // Upstream methods. Can implement when servers support making request
90  bool isDetachable(bool) const override {
91  LOG(FATAL) << __func__ << " is an upstream interface";
92  return false;
93  }
94 
97  const WheelTimerInstance&,
101  HTTPSessionController*) override {
102  LOG(FATAL) << __func__ << " is an upstream interface";
103  }
104 
105  void detachThreadLocals(bool) override {
106  LOG(FATAL) << __func__ << " is an upstream interface";
107  }
108 
110  LOG(FATAL) << __func__ << " is an upstream interface";
111  return nullptr;
112  }
113 
114  bool isReplaySafe() const override {
115  LOG(FATAL) << __func__ << " is an upstream interface";
116  return false;
117  }
118 
119  bool isReusable() const override {
120  LOG(FATAL) << __func__ << " is an upstream interface";
121  return false;
122  }
123 
124  bool isClosing() const override {
125  LOG(FATAL) << __func__ << " is an upstream interface";
126  return false;
127  }
128 
129 };
130 
131 } // proxygen
HTTPCodecFilterChain codec_
const SocketAddress peerAddr
Definition: TestUtils.cpp:20
HTTPDownstreamSession(const WheelTimerInstance &timeout, folly::AsyncTransportWrapper::UniquePtr &&sock, const folly::SocketAddress &localAddr, const folly::SocketAddress &peerAddr, HTTPSessionController *controller, std::unique_ptr< HTTPCodec > codec, const wangle::TransportInfo &tinfo, InfoCallback *infoCallback)
HTTPTransaction * newTransaction(HTTPTransaction::Handler *) override
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
HTTPDownstreamSession(folly::HHWheelTimer *timer, folly::AsyncTransportWrapper::UniquePtr &&sock, const folly::SocketAddress &localAddr, const folly::SocketAddress &peerAddr, HTTPSessionController *controller, std::unique_ptr< HTTPCodec > codec, const wangle::TransportInfo &tinfo, InfoCallback *infoCallback)
CodecFactory codec
STL namespace.
HTTPTransaction::Handler * getTransactionTimeoutHandler(HTTPTransaction *txn) override
void setupOnHeadersComplete(HTTPTransaction *txn, HTTPMessage *msg) override
bool onNativeProtocolUpgrade(HTTPCodec::StreamID streamID, CodecProtocol protocol, const std::string &protocolString, HTTPMessage &msg) override
void attachThreadLocals(folly::EventBase *, folly::SSLContextPtr, const WheelTimerInstance &, HTTPSessionStats *, FilterIteratorFn, HeaderCodec::Stats *, HTTPSessionController *) override
std::function< void(HTTPCodecFilter *)> FilterIteratorFn
std::unique_ptr< AsyncTransportWrapper, Destructor > UniquePtr
std::shared_ptr< SSLContext > SSLContextPtr
Definition: SSLContext.h:628
const char * string
Definition: Conv.cpp:212
const SocketAddress localAddr
Definition: TestUtils.cpp:19
uint64_t StreamID
Definition: HTTPCodec.h:49
bool allTransactionsStarted() const override
bool isDetachable(bool) const override
uint32_t streamID
Definition: SPDYCodec.cpp:131
void onHeadersSent(const HTTPMessage &headers, bool codecWasReusable) override
virtual TransportDirection getTransportDirection() const =0