Add keep_alive() to HttpClientArgs

master
Chunting Gu 6 years ago
parent 5853f39ac3
commit f6c305d266

@ -93,8 +93,7 @@ void ExampleKeepAlive(const std::string& url) {
// Close // Close
session.Request(webcc::HttpRequestArgs("GET").url(url). session.Request(webcc::HttpRequestArgs("GET").url(url).
ssl_verify(kSslVerify). ssl_verify(kSslVerify).keep_alive(false));
headers({"Connection", "Close"}));
// Keep-Alive // Keep-Alive
session.Request(webcc::HttpRequestArgs("GET").url(url). session.Request(webcc::HttpRequestArgs("GET").url(url).

@ -71,6 +71,11 @@ HttpResponsePtr HttpClientSession::Request(HttpRequestArgs&& args) {
std::move(args.headers_[i])); std::move(args.headers_[i]));
} }
// No keep-alive?
if (!args.keep_alive_) {
request.SetHeader(http::headers::kConnection, "Close");
}
request.Prepare(); request.Prepare();
bool ssl_verify = GetSslVerify(ssl_verify_, args.ssl_verify_); bool ssl_verify = GetSslVerify(ssl_verify_, args.ssl_verify_);

@ -19,7 +19,7 @@ class HttpClientSession;
class HttpRequestArgs { class HttpRequestArgs {
public: public:
explicit HttpRequestArgs(const std::string& method = "") explicit HttpRequestArgs(const std::string& method = "")
: method_(method), json_(false), buffer_size_(0) { : method_(method), json_(false), buffer_size_(0), keep_alive_(true) {
} }
HttpRequestArgs(const HttpRequestArgs&) = default; HttpRequestArgs(const HttpRequestArgs&) = default;
@ -83,6 +83,11 @@ public:
return std::move(*this); return std::move(*this);
} }
HttpRequestArgs&& keep_alive(bool keep_alive) {
keep_alive_ = keep_alive;
return std::move(*this);
}
private: private:
friend class HttpClientSession; friend class HttpClientSession;
@ -108,6 +113,9 @@ private:
// Size of the buffer to read response. // Size of the buffer to read response.
// Leave it to 0 for using default value. // Leave it to 0 for using default value.
std::size_t buffer_size_; std::size_t buffer_size_;
// Persistent connection.
bool keep_alive_;
}; };
} // namespace webcc } // namespace webcc

Loading…
Cancel
Save