1717#include " google/cloud/storage/options.h"
1818#include " google/cloud/storage/parallel_upload.h"
1919#include " google/cloud/internal/opentelemetry.h"
20- #include " google/cloud/options.h"
21- #if GOOGLE_CLOUD_CPP_STORAGE_HAVE_GRPC
22- #include " google/cloud/grpc_options.h"
23- #endif
20+ #include " google/cloud/internal/rest_pure_background_threads_impl.h"
2421#include < algorithm>
2522#include < memory>
2623#include < string>
@@ -32,24 +29,18 @@ namespace cloud {
3229namespace storage_internal {
3330GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN
3431
35- namespace {
36- std::size_t DefaultThreadPoolSize (Options const & options) {
37- #if GOOGLE_CLOUD_CPP_STORAGE_HAVE_GRPC
38- auto pool_size = options.get <GrpcBackgroundThreadPoolSizeOption>();
39- if (pool_size == 0 ) return 1U ;
40- return pool_size;
41- #else
42- (void )options;
43- return 1U ;
44- #endif
45- }
46- } // namespace
47-
48- TracingConnection::TracingConnection (std::shared_ptr<StorageConnection> impl)
49- : impl_(std::move(impl)),
50- background_threads_ (
51- std::make_unique<AutomaticallyCreatedStorageBackgroundThreads>(
52- DefaultThreadPoolSize (impl_->options ()))) {}
32+ TracingConnection::TracingConnection (std::shared_ptr<StorageConnection> impl,
33+ AsyncRunner runner)
34+ : impl_(std::move(impl)), runner_(std::move(runner)) {
35+ if (!runner_) {
36+ auto threads =
37+ std::make_shared<google::cloud::rest_internal::
38+ AutomaticallyCreatedRestPureBackgroundThreads>(1U );
39+ runner_ = [threads](std::function<void ()> f) {
40+ threads->cq ().RunAsync (std::move (f));
41+ };
42+ }
43+ }
5344
5445TracingConnection::~TracingConnection () = default ;
5546
@@ -75,7 +66,7 @@ void TracingConnection::MaybeTriggerBackgroundFetch(
7566 }
7667
7768 auto current_options = google::cloud::internal::SaveCurrentOptions ();
78- background_threads_-> cq (). RunAsync ([this , bucket_name, current_options]() {
69+ runner_ ([this , bucket_name, current_options]() {
7970 google::cloud::internal::OptionsSpan span (current_options);
8071 storage::internal::GetBucketMetadataRequest request (bucket_name);
8172 auto result = impl_->GetBucketMetadata (request);
@@ -710,8 +701,10 @@ std::vector<std::string> TracingConnection::InspectStackStructure() const {
710701}
711702
712703std::shared_ptr<storage::internal::StorageConnection> MakeTracingClient (
713- std::shared_ptr<storage::internal::StorageConnection> impl) {
714- return std::make_shared<TracingConnection>(std::move (impl));
704+ std::shared_ptr<storage::internal::StorageConnection> impl,
705+ TracingConnection::AsyncRunner runner) {
706+ return std::make_shared<TracingConnection>(std::move (impl),
707+ std::move (runner));
715708}
716709
717710GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END
0 commit comments