Add keep_alive() to HttpClientArgs
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user