// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Generated by the Codegen C++ plugin.
// If you make any local changes, they will be lost.
// source: google/cloud/configdelivery/v1/config_delivery.proto

#include "google/cloud/configdelivery/v1/internal/config_delivery_logging_decorator.h"
#include "google/cloud/internal/log_wrapper.h"
#include "google/cloud/status_or.h"
#include <google/cloud/configdelivery/v1/config_delivery.grpc.pb.h>
#include <memory>
#include <set>
#include <string>
#include <utility>

namespace google {
namespace cloud {
namespace configdelivery_v1_internal {
GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN

ConfigDeliveryLogging::ConfigDeliveryLogging(
    std::shared_ptr<ConfigDeliveryStub> child, TracingOptions tracing_options,
    std::set<std::string> const&)
    : child_(std::move(child)), tracing_options_(std::move(tracing_options)) {}

StatusOr<google::cloud::configdelivery::v1::ListResourceBundlesResponse>
ConfigDeliveryLogging::ListResourceBundles(
    grpc::ClientContext& context, Options const& options,
    google::cloud::configdelivery::v1::ListResourceBundlesRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](
          grpc::ClientContext& context, Options const& options,
          google::cloud::configdelivery::v1::ListResourceBundlesRequest const&
              request) {
        return child_->ListResourceBundles(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::configdelivery::v1::ResourceBundle>
ConfigDeliveryLogging::GetResourceBundle(
    grpc::ClientContext& context, Options const& options,
    google::cloud::configdelivery::v1::GetResourceBundleRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::GetResourceBundleRequest const&
                 request) {
        return child_->GetResourceBundle(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
ConfigDeliveryLogging::AsyncCreateResourceBundle(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::configdelivery::v1::CreateResourceBundleRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](
          google::cloud::CompletionQueue& cq,
          std::shared_ptr<grpc::ClientContext> context,
          google::cloud::internal::ImmutableOptions options,
          google::cloud::configdelivery::v1::CreateResourceBundleRequest const&
              request) {
        return child_->AsyncCreateResourceBundle(cq, std::move(context),
                                                 std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

StatusOr<google::longrunning::Operation>
ConfigDeliveryLogging::CreateResourceBundle(
    grpc::ClientContext& context, Options options,
    google::cloud::configdelivery::v1::CreateResourceBundleRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](
          grpc::ClientContext& context, Options const& options,
          google::cloud::configdelivery::v1::CreateResourceBundleRequest const&
              request) {
        return child_->CreateResourceBundle(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
ConfigDeliveryLogging::AsyncUpdateResourceBundle(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::configdelivery::v1::UpdateResourceBundleRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](
          google::cloud::CompletionQueue& cq,
          std::shared_ptr<grpc::ClientContext> context,
          google::cloud::internal::ImmutableOptions options,
          google::cloud::configdelivery::v1::UpdateResourceBundleRequest const&
              request) {
        return child_->AsyncUpdateResourceBundle(cq, std::move(context),
                                                 std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

StatusOr<google::longrunning::Operation>
ConfigDeliveryLogging::UpdateResourceBundle(
    grpc::ClientContext& context, Options options,
    google::cloud::configdelivery::v1::UpdateResourceBundleRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](
          grpc::ClientContext& context, Options const& options,
          google::cloud::configdelivery::v1::UpdateResourceBundleRequest const&
              request) {
        return child_->UpdateResourceBundle(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
ConfigDeliveryLogging::AsyncDeleteResourceBundle(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::configdelivery::v1::DeleteResourceBundleRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](
          google::cloud::CompletionQueue& cq,
          std::shared_ptr<grpc::ClientContext> context,
          google::cloud::internal::ImmutableOptions options,
          google::cloud::configdelivery::v1::DeleteResourceBundleRequest const&
              request) {
        return child_->AsyncDeleteResourceBundle(cq, std::move(context),
                                                 std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

StatusOr<google::longrunning::Operation>
ConfigDeliveryLogging::DeleteResourceBundle(
    grpc::ClientContext& context, Options options,
    google::cloud::configdelivery::v1::DeleteResourceBundleRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](
          grpc::ClientContext& context, Options const& options,
          google::cloud::configdelivery::v1::DeleteResourceBundleRequest const&
              request) {
        return child_->DeleteResourceBundle(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::configdelivery::v1::ListFleetPackagesResponse>
ConfigDeliveryLogging::ListFleetPackages(
    grpc::ClientContext& context, Options const& options,
    google::cloud::configdelivery::v1::ListFleetPackagesRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::ListFleetPackagesRequest const&
                 request) {
        return child_->ListFleetPackages(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::configdelivery::v1::FleetPackage>
ConfigDeliveryLogging::GetFleetPackage(
    grpc::ClientContext& context, Options const& options,
    google::cloud::configdelivery::v1::GetFleetPackageRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::GetFleetPackageRequest const&
                 request) {
        return child_->GetFleetPackage(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
ConfigDeliveryLogging::AsyncCreateFleetPackage(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::configdelivery::v1::CreateFleetPackageRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](google::cloud::CompletionQueue& cq,
             std::shared_ptr<grpc::ClientContext> context,
             google::cloud::internal::ImmutableOptions options,
             google::cloud::configdelivery::v1::CreateFleetPackageRequest const&
                 request) {
        return child_->AsyncCreateFleetPackage(cq, std::move(context),
                                               std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

StatusOr<google::longrunning::Operation>
ConfigDeliveryLogging::CreateFleetPackage(
    grpc::ClientContext& context, Options options,
    google::cloud::configdelivery::v1::CreateFleetPackageRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::CreateFleetPackageRequest const&
                 request) {
        return child_->CreateFleetPackage(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
ConfigDeliveryLogging::AsyncUpdateFleetPackage(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::configdelivery::v1::UpdateFleetPackageRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](google::cloud::CompletionQueue& cq,
             std::shared_ptr<grpc::ClientContext> context,
             google::cloud::internal::ImmutableOptions options,
             google::cloud::configdelivery::v1::UpdateFleetPackageRequest const&
                 request) {
        return child_->AsyncUpdateFleetPackage(cq, std::move(context),
                                               std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

StatusOr<google::longrunning::Operation>
ConfigDeliveryLogging::UpdateFleetPackage(
    grpc::ClientContext& context, Options options,
    google::cloud::configdelivery::v1::UpdateFleetPackageRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::UpdateFleetPackageRequest const&
                 request) {
        return child_->UpdateFleetPackage(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
ConfigDeliveryLogging::AsyncDeleteFleetPackage(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::configdelivery::v1::DeleteFleetPackageRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](google::cloud::CompletionQueue& cq,
             std::shared_ptr<grpc::ClientContext> context,
             google::cloud::internal::ImmutableOptions options,
             google::cloud::configdelivery::v1::DeleteFleetPackageRequest const&
                 request) {
        return child_->AsyncDeleteFleetPackage(cq, std::move(context),
                                               std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

StatusOr<google::longrunning::Operation>
ConfigDeliveryLogging::DeleteFleetPackage(
    grpc::ClientContext& context, Options options,
    google::cloud::configdelivery::v1::DeleteFleetPackageRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::DeleteFleetPackageRequest const&
                 request) {
        return child_->DeleteFleetPackage(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::configdelivery::v1::ListReleasesResponse>
ConfigDeliveryLogging::ListReleases(
    grpc::ClientContext& context, Options const& options,
    google::cloud::configdelivery::v1::ListReleasesRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::ListReleasesRequest const&
                 request) {
        return child_->ListReleases(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::configdelivery::v1::Release>
ConfigDeliveryLogging::GetRelease(
    grpc::ClientContext& context, Options const& options,
    google::cloud::configdelivery::v1::GetReleaseRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](
          grpc::ClientContext& context, Options const& options,
          google::cloud::configdelivery::v1::GetReleaseRequest const& request) {
        return child_->GetRelease(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
ConfigDeliveryLogging::AsyncCreateRelease(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::configdelivery::v1::CreateReleaseRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](google::cloud::CompletionQueue& cq,
             std::shared_ptr<grpc::ClientContext> context,
             google::cloud::internal::ImmutableOptions options,
             google::cloud::configdelivery::v1::CreateReleaseRequest const&
                 request) {
        return child_->AsyncCreateRelease(cq, std::move(context),
                                          std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

StatusOr<google::longrunning::Operation> ConfigDeliveryLogging::CreateRelease(
    grpc::ClientContext& context, Options options,
    google::cloud::configdelivery::v1::CreateReleaseRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::CreateReleaseRequest const&
                 request) {
        return child_->CreateRelease(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
ConfigDeliveryLogging::AsyncUpdateRelease(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::configdelivery::v1::UpdateReleaseRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](google::cloud::CompletionQueue& cq,
             std::shared_ptr<grpc::ClientContext> context,
             google::cloud::internal::ImmutableOptions options,
             google::cloud::configdelivery::v1::UpdateReleaseRequest const&
                 request) {
        return child_->AsyncUpdateRelease(cq, std::move(context),
                                          std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

StatusOr<google::longrunning::Operation> ConfigDeliveryLogging::UpdateRelease(
    grpc::ClientContext& context, Options options,
    google::cloud::configdelivery::v1::UpdateReleaseRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::UpdateReleaseRequest const&
                 request) {
        return child_->UpdateRelease(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
ConfigDeliveryLogging::AsyncDeleteRelease(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::configdelivery::v1::DeleteReleaseRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](google::cloud::CompletionQueue& cq,
             std::shared_ptr<grpc::ClientContext> context,
             google::cloud::internal::ImmutableOptions options,
             google::cloud::configdelivery::v1::DeleteReleaseRequest const&
                 request) {
        return child_->AsyncDeleteRelease(cq, std::move(context),
                                          std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

StatusOr<google::longrunning::Operation> ConfigDeliveryLogging::DeleteRelease(
    grpc::ClientContext& context, Options options,
    google::cloud::configdelivery::v1::DeleteReleaseRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::DeleteReleaseRequest const&
                 request) {
        return child_->DeleteRelease(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::configdelivery::v1::ListVariantsResponse>
ConfigDeliveryLogging::ListVariants(
    grpc::ClientContext& context, Options const& options,
    google::cloud::configdelivery::v1::ListVariantsRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::ListVariantsRequest const&
                 request) {
        return child_->ListVariants(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::configdelivery::v1::Variant>
ConfigDeliveryLogging::GetVariant(
    grpc::ClientContext& context, Options const& options,
    google::cloud::configdelivery::v1::GetVariantRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](
          grpc::ClientContext& context, Options const& options,
          google::cloud::configdelivery::v1::GetVariantRequest const& request) {
        return child_->GetVariant(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
ConfigDeliveryLogging::AsyncCreateVariant(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::configdelivery::v1::CreateVariantRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](google::cloud::CompletionQueue& cq,
             std::shared_ptr<grpc::ClientContext> context,
             google::cloud::internal::ImmutableOptions options,
             google::cloud::configdelivery::v1::CreateVariantRequest const&
                 request) {
        return child_->AsyncCreateVariant(cq, std::move(context),
                                          std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

StatusOr<google::longrunning::Operation> ConfigDeliveryLogging::CreateVariant(
    grpc::ClientContext& context, Options options,
    google::cloud::configdelivery::v1::CreateVariantRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::CreateVariantRequest const&
                 request) {
        return child_->CreateVariant(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
ConfigDeliveryLogging::AsyncUpdateVariant(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::configdelivery::v1::UpdateVariantRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](google::cloud::CompletionQueue& cq,
             std::shared_ptr<grpc::ClientContext> context,
             google::cloud::internal::ImmutableOptions options,
             google::cloud::configdelivery::v1::UpdateVariantRequest const&
                 request) {
        return child_->AsyncUpdateVariant(cq, std::move(context),
                                          std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

StatusOr<google::longrunning::Operation> ConfigDeliveryLogging::UpdateVariant(
    grpc::ClientContext& context, Options options,
    google::cloud::configdelivery::v1::UpdateVariantRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::UpdateVariantRequest const&
                 request) {
        return child_->UpdateVariant(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
ConfigDeliveryLogging::AsyncDeleteVariant(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::configdelivery::v1::DeleteVariantRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](google::cloud::CompletionQueue& cq,
             std::shared_ptr<grpc::ClientContext> context,
             google::cloud::internal::ImmutableOptions options,
             google::cloud::configdelivery::v1::DeleteVariantRequest const&
                 request) {
        return child_->AsyncDeleteVariant(cq, std::move(context),
                                          std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

StatusOr<google::longrunning::Operation> ConfigDeliveryLogging::DeleteVariant(
    grpc::ClientContext& context, Options options,
    google::cloud::configdelivery::v1::DeleteVariantRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::DeleteVariantRequest const&
                 request) {
        return child_->DeleteVariant(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::configdelivery::v1::ListRolloutsResponse>
ConfigDeliveryLogging::ListRollouts(
    grpc::ClientContext& context, Options const& options,
    google::cloud::configdelivery::v1::ListRolloutsRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::ListRolloutsRequest const&
                 request) {
        return child_->ListRollouts(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::configdelivery::v1::Rollout>
ConfigDeliveryLogging::GetRollout(
    grpc::ClientContext& context, Options const& options,
    google::cloud::configdelivery::v1::GetRolloutRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](
          grpc::ClientContext& context, Options const& options,
          google::cloud::configdelivery::v1::GetRolloutRequest const& request) {
        return child_->GetRollout(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
ConfigDeliveryLogging::AsyncSuspendRollout(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::configdelivery::v1::SuspendRolloutRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](google::cloud::CompletionQueue& cq,
             std::shared_ptr<grpc::ClientContext> context,
             google::cloud::internal::ImmutableOptions options,
             google::cloud::configdelivery::v1::SuspendRolloutRequest const&
                 request) {
        return child_->AsyncSuspendRollout(cq, std::move(context),
                                           std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

StatusOr<google::longrunning::Operation> ConfigDeliveryLogging::SuspendRollout(
    grpc::ClientContext& context, Options options,
    google::cloud::configdelivery::v1::SuspendRolloutRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::SuspendRolloutRequest const&
                 request) {
        return child_->SuspendRollout(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
ConfigDeliveryLogging::AsyncResumeRollout(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::configdelivery::v1::ResumeRolloutRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](google::cloud::CompletionQueue& cq,
             std::shared_ptr<grpc::ClientContext> context,
             google::cloud::internal::ImmutableOptions options,
             google::cloud::configdelivery::v1::ResumeRolloutRequest const&
                 request) {
        return child_->AsyncResumeRollout(cq, std::move(context),
                                          std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

StatusOr<google::longrunning::Operation> ConfigDeliveryLogging::ResumeRollout(
    grpc::ClientContext& context, Options options,
    google::cloud::configdelivery::v1::ResumeRolloutRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::ResumeRolloutRequest const&
                 request) {
        return child_->ResumeRollout(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
ConfigDeliveryLogging::AsyncAbortRollout(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::configdelivery::v1::AbortRolloutRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](google::cloud::CompletionQueue& cq,
             std::shared_ptr<grpc::ClientContext> context,
             google::cloud::internal::ImmutableOptions options,
             google::cloud::configdelivery::v1::AbortRolloutRequest const&
                 request) {
        return child_->AsyncAbortRollout(cq, std::move(context),
                                         std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

StatusOr<google::longrunning::Operation> ConfigDeliveryLogging::AbortRollout(
    grpc::ClientContext& context, Options options,
    google::cloud::configdelivery::v1::AbortRolloutRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::configdelivery::v1::AbortRolloutRequest const&
                 request) {
        return child_->AbortRollout(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::location::ListLocationsResponse>
ConfigDeliveryLogging::ListLocations(
    grpc::ClientContext& context, Options const& options,
    google::cloud::location::ListLocationsRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::location::ListLocationsRequest const& request) {
        return child_->ListLocations(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::location::Location> ConfigDeliveryLogging::GetLocation(
    grpc::ClientContext& context, Options const& options,
    google::cloud::location::GetLocationRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::location::GetLocationRequest const& request) {
        return child_->GetLocation(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::longrunning::ListOperationsResponse>
ConfigDeliveryLogging::ListOperations(
    grpc::ClientContext& context, Options const& options,
    google::longrunning::ListOperationsRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::longrunning::ListOperationsRequest const& request) {
        return child_->ListOperations(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::longrunning::Operation> ConfigDeliveryLogging::GetOperation(
    grpc::ClientContext& context, Options const& options,
    google::longrunning::GetOperationRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::longrunning::GetOperationRequest const& request) {
        return child_->GetOperation(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

Status ConfigDeliveryLogging::DeleteOperation(
    grpc::ClientContext& context, Options const& options,
    google::longrunning::DeleteOperationRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::longrunning::DeleteOperationRequest const& request) {
        return child_->DeleteOperation(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

Status ConfigDeliveryLogging::CancelOperation(
    grpc::ClientContext& context, Options const& options,
    google::longrunning::CancelOperationRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::longrunning::CancelOperationRequest const& request) {
        return child_->CancelOperation(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
ConfigDeliveryLogging::AsyncGetOperation(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::longrunning::GetOperationRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](google::cloud::CompletionQueue& cq,
             std::shared_ptr<grpc::ClientContext> context,
             google::cloud::internal::ImmutableOptions options,
             google::longrunning::GetOperationRequest const& request) {
        return child_->AsyncGetOperation(cq, std::move(context),
                                         std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

future<Status> ConfigDeliveryLogging::AsyncCancelOperation(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::longrunning::CancelOperationRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](google::cloud::CompletionQueue& cq,
             std::shared_ptr<grpc::ClientContext> context,
             google::cloud::internal::ImmutableOptions options,
             google::longrunning::CancelOperationRequest const& request) {
        return child_->AsyncCancelOperation(cq, std::move(context),
                                            std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END
}  // namespace configdelivery_v1_internal
}  // namespace cloud
}  // namespace google
