Applied thread flag to network layer

PiperOrigin-RevId: 532831254
This commit is contained in:
Guogang Li
2023-05-17 10:28:29 -07:00
committed by Copybara-Service
parent ac15825fa6
commit 7027f50d28
3 changed files with 52 additions and 21 deletions
+2
View File
@@ -53,8 +53,10 @@ cc_library(
],
deps = [
":types",
"//internal/flags:nearby_flags",
"//internal/platform:logging",
"//internal/platform:types",
"//internal/platform/flags:platform_flags",
"//internal/platform/implementation:platform",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/container:flat_hash_map",
+46 -21
View File
@@ -23,7 +23,9 @@
#include <utility>
#include "absl/status/status.h"
#include "internal/flags/nearby_flags.h"
#include "internal/network/debug.h"
#include "internal/platform/flags/nearby_platform_feature_flags.h"
#include "internal/platform/logging.h"
#include "internal/platform/mutex_lock.h"
#include "internal/platform/single_thread_executor.h"
@@ -35,31 +37,54 @@ void NearbyHttpClient::StartRequest(
const HttpRequest& request,
std::function<void(const absl::StatusOr<HttpResponse>&)> callback) {
MutexLock lock(&mutex_);
CleanThreads();
std::future<void> http_thread = std::async(
std::launch::async, [=]() {
NEARBY_LOGS(INFO) << __func__ << ": Start async request to url="
if (NearbyFlags::GetInstance().GetBoolFlag(
platform::config_package_nearby::nearby_platform_feature::
kEnablePlatformThreadToNetwork)) {
executor_.Execute([request = std::move(request),
callback = std::move(callback)]() {
NEARBY_LOGS(INFO) << __func__ << ": Start async request to url="
<< request.GetUrl().GetUrlPath();
absl::StatusOr<HttpResponse> response = InternalGetResponse(request);
if (response.ok()) {
NEARBY_LOGS(INFO) << __func__ << ": Got response from url="
<< request.GetUrl().GetUrlPath();
absl::StatusOr<HttpResponse> response = InternalGetResponse(request);
if (response.ok()) {
NEARBY_LOGS(INFO)
<< __func__
<< ": Got response from url=" << request.GetUrl().GetUrlPath();
} else {
NEARBY_LOGS(ERROR) << __func__ << ": Failed to get response from url="
<< request.GetUrl().GetUrlPath() << ", status"
<< response.status();
}
} else {
NEARBY_LOGS(ERROR) << __func__ << ": Failed to get response from url="
<< request.GetUrl().GetUrlPath() << ", status"
<< response.status();
}
if (callback) {
callback(response);
}
NEARBY_LOGS(INFO) << __func__ << ": Completed request to url="
if (callback) {
callback(response);
}
NEARBY_LOGS(INFO) << __func__ << ": Completed request to url="
<< request.GetUrl().GetUrlPath();
});
} else {
CleanThreads();
std::future<void> http_thread = std::async(std::launch::async, [=]() {
NEARBY_LOGS(INFO) << __func__ << ": Start async request to url="
<< request.GetUrl().GetUrlPath();
absl::StatusOr<HttpResponse> response = InternalGetResponse(request);
if (response.ok()) {
NEARBY_LOGS(INFO) << __func__ << ": Got response from url="
<< request.GetUrl().GetUrlPath();
});
} else {
NEARBY_LOGS(ERROR) << __func__ << ": Failed to get response from url="
<< request.GetUrl().GetUrlPath() << ", status"
<< response.status();
}
http_threads_.push_back(std::move(http_thread));
if (callback) {
callback(response);
}
NEARBY_LOGS(INFO) << __func__ << ": Completed request to url="
<< request.GetUrl().GetUrlPath();
});
http_threads_.push_back(std::move(http_thread));
}
}
void NearbyHttpClient::StartCancellableRequest(
@@ -31,6 +31,10 @@ namespace nearby_platform_feature {
constexpr auto kEnableHotspotWin32Socket =
flags::Flag<bool>(kConfigPackage, "45401992", true);
// Apply platform thread to network library.
constexpr auto kEnablePlatformThreadToNetwork =
flags::Flag<bool>(kConfigPackage, "45412711", true);
} // namespace nearby_platform_feature
} // namespace config_package_nearby
} // namespace platform