proxygen
CurlService::CurlClient Class Reference

#include <CurlClient.h>

Inheritance diagram for CurlService::CurlClient:
proxygen::HTTPConnector::Callback proxygen::HTTPTransactionHandler

Public Member Functions

 CurlClient (folly::EventBase *evb, proxygen::HTTPMethod httpMethod, const proxygen::URL &url, const proxygen::URL *proxy, const proxygen::HTTPHeaders &headers, const std::string &inputFilename, bool h2c=false, unsigned short httpMajor=1, unsigned short httpMinor=1)
 
virtual ~CurlClient ()=default
 
void initializeSsl (const std::string &caPath, const std::string &nextProtos, const std::string &certPath="", const std::string &keyPath="")
 
void sslHandshakeFollowup (proxygen::HTTPUpstreamSession *session) noexcept
 
void connectSuccess (proxygen::HTTPUpstreamSession *session) override
 
void connectError (const folly::AsyncSocketException &ex) override
 
void setTransaction (proxygen::HTTPTransaction *txn) noexceptoverride
 
void detachTransaction () noexceptoverride
 
void onHeadersComplete (std::unique_ptr< proxygen::HTTPMessage > msg) noexceptoverride
 
void onBody (std::unique_ptr< folly::IOBuf > chain) noexceptoverride
 
void onTrailers (std::unique_ptr< proxygen::HTTPHeaders > trailers) noexceptoverride
 
void onEOM () noexceptoverride
 
void onUpgrade (proxygen::UpgradeProtocol protocol) noexceptoverride
 
void onError (const proxygen::HTTPException &error) noexceptoverride
 
void onEgressPaused () noexceptoverride
 
void onEgressResumed () noexceptoverride
 
void sendRequest (proxygen::HTTPTransaction *txn)
 
folly::SSLContextPtr getSSLContext ()
 
const std::stringgetServerName () const
 
void setFlowControlSettings (int32_t recvWindow)
 
const proxygen::HTTPMessagegetResponse () const
 
void setLogging (bool enabled)
 
- Public Member Functions inherited from proxygen::HTTPConnector::Callback
virtual ~Callback ()
 
- Public Member Functions inherited from proxygen::HTTPTransactionHandler
virtual void onChunkHeader (size_t) noexcept
 
virtual void onChunkComplete () noexcept
 
virtual void onPushedTransaction (HTTPTransaction *) noexcept
 
virtual void onExTransaction (HTTPTransaction *) noexcept
 
virtual void onGoaway (ErrorCode) noexcept
 
virtual ~HTTPTransactionHandler ()
 

Static Public Member Functions

static proxygen::HTTPHeaders parseHeaders (const std::string &headersString)
 

Protected Attributes

proxygen::HTTPTransactiontxn_ {nullptr}
 
folly::EventBaseevb_ {nullptr}
 
proxygen::HTTPMethod httpMethod_
 
proxygen::URL url_
 
std::unique_ptr< proxygen::URLproxy_
 
proxygen::HTTPMessage request_
 
const std::string inputFilename_
 
folly::SSLContextPtr sslContext_
 
int32_t recvWindow_ {0}
 
bool loggingEnabled_ {true}
 
bool h2c_ {false}
 
unsigned short httpMajor_
 
unsigned short httpMinor_
 
std::unique_ptr< proxygen::HTTPMessageresponse_
 

Detailed Description

Definition at line 20 of file CurlClient.h.

Constructor & Destructor Documentation

CurlService::CurlClient::CurlClient ( folly::EventBase evb,
proxygen::HTTPMethod  httpMethod,
const proxygen::URL url,
const proxygen::URL proxy,
const proxygen::HTTPHeaders headers,
const std::string inputFilename,
bool  h2c = false,
unsigned short  httpMajor = 1,
unsigned short  httpMinor = 1 
)

Definition at line 23 of file CurlClient.cpp.

References proxygen::HTTPHeaders::add(), proxygen::HTTPHeaders::forEach(), proxygen::HTTPMessage::getHeaders(), proxygen::URL::getUrl(), proxy_, request_, and val.

32  : evb_(evb),
33  httpMethod_(httpMethod),
34  url_(url),
35  inputFilename_(inputFilename),
36  h2c_(h2c),
37  httpMajor_(httpMajor),
38  httpMinor_(httpMinor) {
39  if (proxy != nullptr) {
40  proxy_ = std::make_unique<URL>(proxy->getUrl());
41  }
42 
43  headers.forEach([this] (const string& header, const string& val) {
44  request_.getHeaders().add(header, val);
45  });
46 }
proxygen::URL url_
Definition: CurlClient.h:84
folly::EventBase * evb_
Definition: CurlClient.h:82
const std::string inputFilename_
Definition: CurlClient.h:87
unsigned short httpMajor_
Definition: CurlClient.h:92
proxygen::HTTPMethod httpMethod_
Definition: CurlClient.h:83
double val
Definition: String.cpp:273
const std::string & getUrl() const noexcept
Definition: URL.h:98
void forEach(LAMBDA func) const
Definition: HTTPHeaders.h:337
HTTPHeaders & getHeaders()
Definition: HTTPMessage.h:273
void add(folly::StringPiece name, folly::StringPiece value)
Definition: HTTPHeaders.cpp:52
std::unique_ptr< proxygen::URL > proxy_
Definition: CurlClient.h:85
proxygen::HTTPMessage request_
Definition: CurlClient.h:86
unsigned short httpMinor_
Definition: CurlClient.h:93
virtual CurlService::CurlClient::~CurlClient ( )
virtualdefault

Member Function Documentation

void CurlService::CurlClient::connectError ( const folly::AsyncSocketException ex)
overridevirtual

Implements proxygen::HTTPConnector::Callback.

Definition at line 178 of file CurlClient.cpp.

References proxygen::ERROR, proxygen::URL::getHostAndPort(), loggingEnabled_, and url_.

178  {
179  LOG_IF(ERROR, loggingEnabled_) << "Coudln't connect to "
180  << url_.getHostAndPort() << ":" << ex.what();
181 }
proxygen::URL url_
Definition: CurlClient.h:84
std::string getHostAndPort() const noexcept
Definition: URL.h:122
void CurlService::CurlClient::connectSuccess ( proxygen::HTTPUpstreamSession session)
overridevirtual

Implements proxygen::HTTPConnector::Callback.

Definition at line 112 of file CurlClient.cpp.

References proxygen::HTTPSession::closeWhenIdle(), proxygen::URL::isSecure(), proxygen::HTTPUpstreamSession::newTransaction(), recvWindow_, sendRequest(), proxygen::HTTPSession::setFlowControl(), sslHandshakeFollowup(), and url_.

112  {
113 
114  if (url_.isSecure()) {
115  sslHandshakeFollowup(session);
116  }
117 
119  sendRequest(session->newTransaction(this));
120  session->closeWhenIdle();
121 }
proxygen::URL url_
Definition: CurlClient.h:84
HTTPTransaction * newTransaction(HTTPTransaction::Handler *handler) override
void sslHandshakeFollowup(proxygen::HTTPUpstreamSession *session) noexcept
Definition: CurlClient.cpp:89
void setFlowControl(size_t initialReceiveWindow, size_t receiveStreamWindowSize, size_t receiveSessionWindowSize) override
bool isSecure() const noexcept
Definition: URL.h:110
void closeWhenIdle() override
void sendRequest(proxygen::HTTPTransaction *txn)
Definition: CurlClient.cpp:123
void CurlService::CurlClient::detachTransaction ( )
overridevirtualnoexcept

Called once after a transaction successfully completes. It will be called even if a read or write error happened earlier. This is a terminal callback, which means that the HTTPTransaction object that gives this call will be invalid after this function completes.

Implements proxygen::HTTPTransactionHandler.

Definition at line 186 of file CurlClient.cpp.

186  {
187 }
const proxygen::HTTPMessage* CurlService::CurlClient::getResponse ( ) const
inline

Definition at line 72 of file CurlClient.h.

References response_.

Referenced by TEST().

72  {
73  return response_.get();
74  }
std::unique_ptr< proxygen::HTTPMessage > response_
Definition: CurlClient.h:95
const string & CurlService::CurlClient::getServerName ( ) const

Definition at line 239 of file CurlClient.cpp.

References proxygen::HTTPMessage::getHeaders(), proxygen::URL::getHost(), proxygen::HTTPHeaders::getSingleOrEmpty(), proxygen::HTTP_HEADER_HOST, request_, and url_.

Referenced by getSSLContext().

239  {
240  const string& res = request_.getHeaders().getSingleOrEmpty(HTTP_HEADER_HOST);
241  if (res.empty()) {
242  return url_.getHost();
243  }
244  return res;
245 }
proxygen::URL url_
Definition: CurlClient.h:84
const std::string & getHost() const noexcept
Definition: URL.h:118
HTTPHeaders & getHeaders()
Definition: HTTPMessage.h:273
const std::string & getSingleOrEmpty(const T &nameOrCode) const
Definition: HTTPHeaders.h:420
proxygen::HTTPMessage request_
Definition: CurlClient.h:86
folly::SSLContextPtr CurlService::CurlClient::getSSLContext ( )
inline

Definition at line 66 of file CurlClient.h.

References getServerName(), int32_t, setFlowControlSettings(), sslContext_, and string.

66 { return sslContext_; }
folly::SSLContextPtr sslContext_
Definition: CurlClient.h:88
void CurlService::CurlClient::initializeSsl ( const std::string caPath,
const std::string nextProtos,
const std::string certPath = "",
const std::string keyPath = "" 
)

Definition at line 69 of file CurlClient.cpp.

References h2c_, folly::ssl::SSLCommonOptions::kCipherList, and sslContext_.

72  {
73  sslContext_ = std::make_shared<folly::SSLContext>();
74  sslContext_->setOptions(SSL_OP_NO_COMPRESSION);
76  if (!caPath.empty()) {
77  sslContext_->loadTrustedCertificates(caPath.c_str());
78  }
79  if (!certPath.empty() && !keyPath.empty()) {
80  sslContext_->loadCertKeyPairFromFiles(certPath.c_str(), keyPath.c_str());
81  }
82  list<string> nextProtoList;
83  folly::splitTo<string>(',', nextProtos, std::inserter(nextProtoList,
84  nextProtoList.begin()));
85  sslContext_->setAdvertisedNextProtocols(nextProtoList);
86  h2c_ = false;
87 }
folly::SSLContextPtr sslContext_
Definition: CurlClient.h:88
static constexpr auto kCipherList
Definition: SSLOptions.h:33
void CurlService::CurlClient::onBody ( std::unique_ptr< folly::IOBuf chain)
overridevirtualnoexcept

Can be called multiple times per transaction. If you had previously called pauseIngress(), this callback will be delayed until you call resumeIngress().

Implements proxygen::HTTPTransactionHandler.

Definition at line 201 of file CurlClient.cpp.

References folly::IOBuf::data(), folly::IOBuf::length(), loggingEnabled_, and folly::IOBuf::next().

201  {
202  if (!loggingEnabled_) {
203  return;
204  }
205  if (chain) {
206  const IOBuf* p = chain.get();
207  do {
208  cout.write((const char*)p->data(), p->length());
209  cout.flush();
210  p = p->next();
211  } while (p != chain.get());
212  }
213 }
const uint8_t * data() const
Definition: IOBuf.h:499
std::size_t length() const
Definition: IOBuf.h:533
IOBuf * next()
Definition: IOBuf.h:600
void CurlService::CurlClient::onEgressPaused ( )
overridevirtualnoexcept

If the remote side's receive buffer fills up, this callback will be invoked so you can attempt to stop sending to the remote side.

Implements proxygen::HTTPTransactionHandler.

Definition at line 231 of file CurlClient.cpp.

References folly::INFO, and loggingEnabled_.

231  {
232  LOG_IF(INFO, loggingEnabled_) << "Egress paused";
233 }
void CurlService::CurlClient::onEgressResumed ( )
overridevirtualnoexcept

This callback lets you know that the remote side has resumed reading and you can now continue to send data.

Implements proxygen::HTTPTransactionHandler.

Definition at line 235 of file CurlClient.cpp.

References folly::INFO, and loggingEnabled_.

235  {
236  LOG_IF(INFO, loggingEnabled_) << "Egress resumed";
237 }
void CurlService::CurlClient::onEOM ( )
overridevirtualnoexcept

Can be called once per transaction. If you had previously called pauseIngress(), this callback will be delayed until you call resumeIngress(). After this callback is received, there will be no more normal ingress callbacks received (onEgress*() and onError() may still be invoked). The Handler should consider ingress complete after receiving this message. This Transaction is still valid, and work may still occur on it until detachTransaction is called.

Implements proxygen::HTTPTransactionHandler.

Definition at line 219 of file CurlClient.cpp.

References folly::INFO, and loggingEnabled_.

219  {
220  LOG_IF(INFO, loggingEnabled_) << "Got EOM";
221 }
void CurlService::CurlClient::onError ( const proxygen::HTTPException error)
overridevirtualnoexcept

Can be called at any time before detachTransaction(). This callback implies that an error has occurred. To determine if ingress or egress is affected, check the direciont on the HTTPException. If the direction is INGRESS, it MAY still be possible to send egress.

Implements proxygen::HTTPTransactionHandler.

Definition at line 227 of file CurlClient.cpp.

References proxygen::ERROR, folly::pushmi::operators::error(), and loggingEnabled_.

227  {
228  LOG_IF(ERROR, loggingEnabled_) << "An error occurred: " << error.what();
229 }
const char * what(void) const noexceptoverride
Definition: Exception.cpp:26
void CurlService::CurlClient::onHeadersComplete ( std::unique_ptr< proxygen::HTTPMessage msg)
overridevirtualnoexcept

Called at most once per transaction. This is usually the first ingress callback. It is possible to get a read error before this however. If you had previously called pauseIngress(), this callback will be delayed until you call resumeIngress().

Implements proxygen::HTTPTransactionHandler.

Definition at line 189 of file CurlClient.cpp.

References loggingEnabled_, folly::gen::move, response_, and val.

189  {
190  response_ = std::move(msg);
191  if (!loggingEnabled_) {
192  return;
193  }
194  cout << response_->getStatusCode() << " "
195  << response_->getStatusMessage() << endl;
196  response_->getHeaders().forEach([&](const string& header, const string& val) {
197  cout << header << ": " << val << endl;
198  });
199 }
std::unique_ptr< proxygen::HTTPMessage > response_
Definition: CurlClient.h:95
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
double val
Definition: String.cpp:273
void CurlService::CurlClient::onTrailers ( std::unique_ptr< proxygen::HTTPHeaders trailers)
overridevirtualnoexcept

Can be called any number of times per transaction. If you had previously called pauseIngress(), this callback will be delayed until you call resumeIngress(). Trailers can be received once right before the EOM of a chunked HTTP/1.1 reponse or multiple times per transaction from SPDY and HTTP/2.0 HEADERS frames.

Implements proxygen::HTTPTransactionHandler.

Definition at line 215 of file CurlClient.cpp.

References folly::INFO, and loggingEnabled_.

215  {
216  LOG_IF(INFO, loggingEnabled_) << "Discarding trailers";
217 }
void CurlService::CurlClient::onUpgrade ( proxygen::UpgradeProtocol  protocol)
overridevirtualnoexcept

Can be called once per transaction. If you had previously called pauseIngress(), this callback will be delayed until you call resumeIngress(). After this callback is invoked, further data will be forwarded using the onBody() callback. Once the data transfer is completed (EOF recevied in case of CONNECT), onEOM() callback will be invoked.

Implements proxygen::HTTPTransactionHandler.

Definition at line 223 of file CurlClient.cpp.

References folly::INFO, and loggingEnabled_.

223  {
224  LOG_IF(INFO, loggingEnabled_) << "Discarding upgrade protocol";
225 }
HTTPHeaders CurlService::CurlClient::parseHeaders ( const std::string headersString)
static

Definition at line 48 of file CurlClient.cpp.

References proxygen::HTTPHeaders::add(), folly::empty(), folly::split(), and value.

Referenced by main().

48  {
49  vector<StringPiece> headersList;
50  HTTPHeaders headers;
51  folly::split(",", headersString, headersList);
52  for (const auto& headerPair: headersList) {
53  vector<StringPiece> nv;
54  folly::split('=', headerPair, nv);
55  if (nv.size() > 0) {
56  if (nv[0].empty()) {
57  continue;
58  }
59  StringPiece value("");
60  if (nv.size() > 1) {
61  value = nv[1];
62  } // trim anything else
63  headers.add(nv[0], value);
64  }
65  }
66  return headers;
67 }
void split(const Delim &delimiter, const String &input, std::vector< OutputType > &out, bool ignoreEmpty)
Definition: String-inl.h:382
constexpr auto empty(C const &c) -> decltype(c.empty())
Definition: Access.h:55
static const char *const value
Definition: Conv.cpp:50
void add(folly::StringPiece name, folly::StringPiece value)
Definition: HTTPHeaders.cpp:52
void CurlService::CurlClient::sendRequest ( proxygen::HTTPTransaction txn)

Definition at line 123 of file CurlClient.cpp.

References proxygen::HTTPHeaders::add(), folly::IOBuf::append(), proxygen::HTTPMessage::dumpMessage(), proxygen::HTTPMessage::getHeaders(), proxygen::URL::getHostAndPort(), proxygen::HTTPHeaders::getNumberOfValues(), proxygen::URL::getUrl(), h2c_, proxygen::HTTP_HEADER_ACCEPT, proxygen::HTTP_HEADER_HOST, proxygen::HTTP_HEADER_USER_AGENT, httpMajor_, httpMethod_, httpMinor_, inputFilename_, proxygen::URL::isSecure(), loggingEnabled_, proxygen::URL::makeRelativeURL(), folly::gen::move, proxy_, request_, proxygen::HTTPTransaction::sendBody(), proxygen::HTTPTransaction::sendEOM(), proxygen::HTTPTransaction::sendHeaders(), proxygen::HTTPMessage::setHTTPVersion(), proxygen::HTTPMessage::setMethod(), proxygen::HTTPMessage::setSecure(), proxygen::HTTPMessage::setURL(), txn_, uint16_t, url_, and folly::IOBuf::writableData().

Referenced by connectSuccess().

123  {
124  txn_ = txn;
127  if (proxy_) {
129  } else {
131  }
133  if (h2c_) {
134  HTTP2Codec::requestUpgrade(request_);
135  }
136 
138  request_.getHeaders().add(HTTP_HEADER_USER_AGENT, "proxygen_curl");
139  }
142  }
144  request_.getHeaders().add("Accept", "*/*");
145  }
146  if (loggingEnabled_) {
148  }
149 
151 
152  unique_ptr<IOBuf> buf;
153  if (httpMethod_ == HTTPMethod::POST) {
154 
155  const uint16_t kReadSize = 4096;
156  ifstream inputFile(inputFilename_, ios::in | ios::binary);
157 
158  // Reading from the file by chunks
159  // Important note: It's pretty bad to call a blocking i/o function like
160  // ifstream::read() in an eventloop - but for the sake of this simple
161  // example, we'll do it.
162  // An alternative would be to put this into some folly::AsyncReader
163  // object.
164  while (inputFile.good()) {
165  buf = IOBuf::createCombined(kReadSize);
166  inputFile.read((char*)buf->writableData(), kReadSize);
167  buf->append(inputFile.gcount());
168  txn_->sendBody(move(buf));
169  }
170  }
171 
172  // note that sendBody() is called only for POST. It's fine not to call it
173  // at all.
174 
175  txn_->sendEOM();
176 }
proxygen::URL url_
Definition: CurlClient.h:84
std::string makeRelativeURL() const noexcept
Definition: URL.h:138
const std::string inputFilename_
Definition: CurlClient.h:87
unsigned short httpMajor_
Definition: CurlClient.h:92
proxygen::HTTPMethod httpMethod_
Definition: CurlClient.h:83
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
const std::string & getUrl() const noexcept
Definition: URL.h:98
size_t getNumberOfValues(HTTPHeaderCode code) const
std::string getHostAndPort() const noexcept
Definition: URL.h:122
void setSecure(bool secure)
Definition: HTTPMessage.h:534
ParseURL setURL(T &&url)
Definition: HTTPMessage.h:183
uint8_t * writableData()
Definition: IOBuf.h:509
proxygen::HTTPTransaction * txn_
Definition: CurlClient.h:81
virtual void sendBody(std::unique_ptr< folly::IOBuf > body)
virtual void sendHeaders(const HTTPMessage &headers)
HTTPHeaders & getHeaders()
Definition: HTTPMessage.h:273
void setMethod(HTTPMethod method)
bool isSecure() const noexcept
Definition: URL.h:110
void setHTTPVersion(uint8_t major, uint8_t minor)
void add(folly::StringPiece name, folly::StringPiece value)
Definition: HTTPHeaders.cpp:52
std::unique_ptr< proxygen::URL > proxy_
Definition: CurlClient.h:85
void dumpMessage(int verbosity) const
proxygen::HTTPMessage request_
Definition: CurlClient.h:86
void append(std::size_t amount)
Definition: IOBuf.h:689
unsigned short httpMinor_
Definition: CurlClient.h:93
void CurlService::CurlClient::setFlowControlSettings ( int32_t  recvWindow)

Definition at line 108 of file CurlClient.cpp.

References recvWindow_.

Referenced by getSSLContext(), main(), and TEST().

108  {
109  recvWindow_ = recvWindow;
110 }
void CurlService::CurlClient::setLogging ( bool  enabled)
inline

Definition at line 76 of file CurlClient.h.

References loggingEnabled_.

Referenced by TEST().

76  {
77  loggingEnabled_ = enabled;
78  }
void CurlService::CurlClient::setTransaction ( proxygen::HTTPTransaction txn)
overridevirtualnoexcept

Called once per transaction. This notifies the handler of which transaction it should talk to and will receive callbacks from.

Implements proxygen::HTTPTransactionHandler.

Definition at line 183 of file CurlClient.cpp.

183  {
184 }
void CurlService::CurlClient::sslHandshakeFollowup ( proxygen::HTTPUpstreamSession session)
noexcept

Definition at line 89 of file CurlClient.cpp.

References folly::AsyncSSLSocket::getSelectedNextProtocol(), and string.

Referenced by connectSuccess().

89  {
90  AsyncSSLSocket* sslSocket = dynamic_cast<AsyncSSLSocket*>(
91  session->getTransport());
92 
93  const unsigned char* nextProto = nullptr;
94  unsigned nextProtoLength = 0;
95  sslSocket->getSelectedNextProtocol(&nextProto, &nextProtoLength);
96  if (nextProto) {
97  VLOG(1) << "Client selected next protocol " <<
98  string((const char*)nextProto, nextProtoLength);
99  } else {
100  VLOG(1) << "Client did not select a next protocol";
101  }
102 
103  // Note: This ssl session can be used by defining a member and setting
104  // something like sslSession_ = sslSocket->getSSLSession() and then
105  // passing it to the connector::connectSSL() method
106 }
folly::AsyncTransportWrapper * getTransport() override
Definition: HTTPSession.h:61
const char * string
Definition: Conv.cpp:212
virtual void getSelectedNextProtocol(const unsigned char **protoName, unsigned *protoLen) const

Member Data Documentation

folly::EventBase* CurlService::CurlClient::evb_ {nullptr}
protected

Definition at line 82 of file CurlClient.h.

bool CurlService::CurlClient::h2c_ {false}
protected

Definition at line 91 of file CurlClient.h.

Referenced by initializeSsl(), and sendRequest().

unsigned short CurlService::CurlClient::httpMajor_
protected

Definition at line 92 of file CurlClient.h.

Referenced by sendRequest().

proxygen::HTTPMethod CurlService::CurlClient::httpMethod_
protected

Definition at line 83 of file CurlClient.h.

Referenced by sendRequest().

unsigned short CurlService::CurlClient::httpMinor_
protected

Definition at line 93 of file CurlClient.h.

Referenced by sendRequest().

const std::string CurlService::CurlClient::inputFilename_
protected

Definition at line 87 of file CurlClient.h.

Referenced by sendRequest().

bool CurlService::CurlClient::loggingEnabled_ {true}
protected
std::unique_ptr<proxygen::URL> CurlService::CurlClient::proxy_
protected

Definition at line 85 of file CurlClient.h.

Referenced by CurlClient(), and sendRequest().

int32_t CurlService::CurlClient::recvWindow_ {0}
protected

Definition at line 89 of file CurlClient.h.

Referenced by connectSuccess(), and setFlowControlSettings().

proxygen::HTTPMessage CurlService::CurlClient::request_
protected

Definition at line 86 of file CurlClient.h.

Referenced by CurlClient(), getServerName(), and sendRequest().

std::unique_ptr<proxygen::HTTPMessage> CurlService::CurlClient::response_
protected

Definition at line 95 of file CurlClient.h.

Referenced by getResponse(), and onHeadersComplete().

folly::SSLContextPtr CurlService::CurlClient::sslContext_
protected

Definition at line 88 of file CurlClient.h.

Referenced by getSSLContext(), and initializeSsl().

proxygen::HTTPTransaction* CurlService::CurlClient::txn_ {nullptr}
protected

Definition at line 81 of file CurlClient.h.

Referenced by sendRequest().

proxygen::URL CurlService::CurlClient::url_
protected

Definition at line 84 of file CurlClient.h.

Referenced by connectError(), connectSuccess(), getServerName(), and sendRequest().


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