// 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/oracledatabase/v1/oracledatabase.proto

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

// Must be included last.
#include "google/cloud/ports_def.inc"

namespace google {
namespace cloud {
namespace oracledatabase_v1_internal {
GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN

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

StatusOr<
    google::cloud::oracledatabase::v1::ListCloudExadataInfrastructuresResponse>
OracleDatabaseLogging::ListCloudExadataInfrastructures(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::
        ListCloudExadataInfrastructuresRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::
                 ListCloudExadataInfrastructuresRequest const& request) {
        return child_->ListCloudExadataInfrastructures(context, options,
                                                       request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::CloudExadataInfrastructure>
OracleDatabaseLogging::GetCloudExadataInfrastructure(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::
        GetCloudExadataInfrastructureRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::
                 GetCloudExadataInfrastructureRequest const& request) {
        return child_->GetCloudExadataInfrastructure(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncCreateCloudExadataInfrastructure(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::
        CreateCloudExadataInfrastructureRequest 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::oracledatabase::v1::
                 CreateCloudExadataInfrastructureRequest const& request) {
        return child_->AsyncCreateCloudExadataInfrastructure(
            cq, std::move(context), std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncDeleteCloudExadataInfrastructure(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::
        DeleteCloudExadataInfrastructureRequest 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::oracledatabase::v1::
                 DeleteCloudExadataInfrastructureRequest const& request) {
        return child_->AsyncDeleteCloudExadataInfrastructure(
            cq, std::move(context), std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

StatusOr<google::cloud::oracledatabase::v1::ListCloudVmClustersResponse>
OracleDatabaseLogging::ListCloudVmClusters(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListCloudVmClustersRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](
          grpc::ClientContext& context, Options const& options,
          google::cloud::oracledatabase::v1::ListCloudVmClustersRequest const&
              request) {
        return child_->ListCloudVmClusters(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::CloudVmCluster>
OracleDatabaseLogging::GetCloudVmCluster(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::GetCloudVmClusterRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::GetCloudVmClusterRequest const&
                 request) {
        return child_->GetCloudVmCluster(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncCreateCloudVmCluster(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::CreateCloudVmClusterRequest 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::oracledatabase::v1::CreateCloudVmClusterRequest const&
              request) {
        return child_->AsyncCreateCloudVmCluster(cq, std::move(context),
                                                 std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncDeleteCloudVmCluster(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::DeleteCloudVmClusterRequest 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::oracledatabase::v1::DeleteCloudVmClusterRequest const&
              request) {
        return child_->AsyncDeleteCloudVmCluster(cq, std::move(context),
                                                 std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

StatusOr<google::cloud::oracledatabase::v1::ListEntitlementsResponse>
OracleDatabaseLogging::ListEntitlements(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListEntitlementsRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::ListEntitlementsRequest const&
                 request) {
        return child_->ListEntitlements(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::ListDbServersResponse>
OracleDatabaseLogging::ListDbServers(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListDbServersRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::ListDbServersRequest const&
                 request) {
        return child_->ListDbServers(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::ListDbNodesResponse>
OracleDatabaseLogging::ListDbNodes(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListDbNodesRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::ListDbNodesRequest const&
                 request) {
        return child_->ListDbNodes(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::ListGiVersionsResponse>
OracleDatabaseLogging::ListGiVersions(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListGiVersionsRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::ListGiVersionsRequest const&
                 request) {
        return child_->ListGiVersions(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::ListMinorVersionsResponse>
OracleDatabaseLogging::ListMinorVersions(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListMinorVersionsRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::ListMinorVersionsRequest const&
                 request) {
        return child_->ListMinorVersions(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::ListDbSystemShapesResponse>
OracleDatabaseLogging::ListDbSystemShapes(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListDbSystemShapesRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::ListDbSystemShapesRequest const&
                 request) {
        return child_->ListDbSystemShapes(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::ListAutonomousDatabasesResponse>
OracleDatabaseLogging::ListAutonomousDatabases(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListAutonomousDatabasesRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::
                 ListAutonomousDatabasesRequest const& request) {
        return child_->ListAutonomousDatabases(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::AutonomousDatabase>
OracleDatabaseLogging::GetAutonomousDatabase(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::GetAutonomousDatabaseRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](
          grpc::ClientContext& context, Options const& options,
          google::cloud::oracledatabase::v1::GetAutonomousDatabaseRequest const&
              request) {
        return child_->GetAutonomousDatabase(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncCreateAutonomousDatabase(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::CreateAutonomousDatabaseRequest 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::oracledatabase::v1::
                 CreateAutonomousDatabaseRequest const& request) {
        return child_->AsyncCreateAutonomousDatabase(
            cq, std::move(context), std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncUpdateAutonomousDatabase(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::UpdateAutonomousDatabaseRequest 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::oracledatabase::v1::
                 UpdateAutonomousDatabaseRequest const& request) {
        return child_->AsyncUpdateAutonomousDatabase(
            cq, std::move(context), std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncDeleteAutonomousDatabase(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::DeleteAutonomousDatabaseRequest 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::oracledatabase::v1::
                 DeleteAutonomousDatabaseRequest const& request) {
        return child_->AsyncDeleteAutonomousDatabase(
            cq, std::move(context), std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncRestoreAutonomousDatabase(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::RestoreAutonomousDatabaseRequest 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::oracledatabase::v1::
                 RestoreAutonomousDatabaseRequest const& request) {
        return child_->AsyncRestoreAutonomousDatabase(
            cq, std::move(context), std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

StatusOr<
    google::cloud::oracledatabase::v1::GenerateAutonomousDatabaseWalletResponse>
OracleDatabaseLogging::GenerateAutonomousDatabaseWallet(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::
        GenerateAutonomousDatabaseWalletRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::
                 GenerateAutonomousDatabaseWalletRequest const& request) {
        return child_->GenerateAutonomousDatabaseWallet(context, options,
                                                        request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::ListAutonomousDbVersionsResponse>
OracleDatabaseLogging::ListAutonomousDbVersions(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListAutonomousDbVersionsRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::
                 ListAutonomousDbVersionsRequest const& request) {
        return child_->ListAutonomousDbVersions(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::
             ListAutonomousDatabaseCharacterSetsResponse>
OracleDatabaseLogging::ListAutonomousDatabaseCharacterSets(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::
        ListAutonomousDatabaseCharacterSetsRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::
                 ListAutonomousDatabaseCharacterSetsRequest const& request) {
        return child_->ListAutonomousDatabaseCharacterSets(context, options,
                                                           request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<
    google::cloud::oracledatabase::v1::ListAutonomousDatabaseBackupsResponse>
OracleDatabaseLogging::ListAutonomousDatabaseBackups(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::
        ListAutonomousDatabaseBackupsRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::
                 ListAutonomousDatabaseBackupsRequest const& request) {
        return child_->ListAutonomousDatabaseBackups(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncStopAutonomousDatabase(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::StopAutonomousDatabaseRequest 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::oracledatabase::v1::
                 StopAutonomousDatabaseRequest const& request) {
        return child_->AsyncStopAutonomousDatabase(cq, std::move(context),
                                                   std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncStartAutonomousDatabase(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::StartAutonomousDatabaseRequest 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::oracledatabase::v1::
                 StartAutonomousDatabaseRequest const& request) {
        return child_->AsyncStartAutonomousDatabase(
            cq, std::move(context), std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncRestartAutonomousDatabase(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::RestartAutonomousDatabaseRequest 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::oracledatabase::v1::
                 RestartAutonomousDatabaseRequest const& request) {
        return child_->AsyncRestartAutonomousDatabase(
            cq, std::move(context), std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncSwitchoverAutonomousDatabase(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::
        SwitchoverAutonomousDatabaseRequest 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::oracledatabase::v1::
                 SwitchoverAutonomousDatabaseRequest const& request) {
        return child_->AsyncSwitchoverAutonomousDatabase(
            cq, std::move(context), std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncFailoverAutonomousDatabase(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::FailoverAutonomousDatabaseRequest 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::oracledatabase::v1::
                 FailoverAutonomousDatabaseRequest const& request) {
        return child_->AsyncFailoverAutonomousDatabase(
            cq, std::move(context), std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

StatusOr<google::cloud::oracledatabase::v1::ListOdbNetworksResponse>
OracleDatabaseLogging::ListOdbNetworks(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListOdbNetworksRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::ListOdbNetworksRequest const&
                 request) {
        return child_->ListOdbNetworks(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::OdbNetwork>
OracleDatabaseLogging::GetOdbNetwork(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::GetOdbNetworkRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::GetOdbNetworkRequest const&
                 request) {
        return child_->GetOdbNetwork(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncCreateOdbNetwork(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::CreateOdbNetworkRequest 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::oracledatabase::v1::CreateOdbNetworkRequest const&
                 request) {
        return child_->AsyncCreateOdbNetwork(cq, std::move(context),
                                             std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncDeleteOdbNetwork(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::DeleteOdbNetworkRequest 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::oracledatabase::v1::DeleteOdbNetworkRequest const&
                 request) {
        return child_->AsyncDeleteOdbNetwork(cq, std::move(context),
                                             std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

StatusOr<google::cloud::oracledatabase::v1::ListOdbSubnetsResponse>
OracleDatabaseLogging::ListOdbSubnets(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListOdbSubnetsRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::ListOdbSubnetsRequest const&
                 request) {
        return child_->ListOdbSubnets(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::OdbSubnet>
OracleDatabaseLogging::GetOdbSubnet(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::GetOdbSubnetRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::GetOdbSubnetRequest const&
                 request) {
        return child_->GetOdbSubnet(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncCreateOdbSubnet(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::CreateOdbSubnetRequest 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::oracledatabase::v1::CreateOdbSubnetRequest const&
                 request) {
        return child_->AsyncCreateOdbSubnet(cq, std::move(context),
                                            std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncDeleteOdbSubnet(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::DeleteOdbSubnetRequest 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::oracledatabase::v1::DeleteOdbSubnetRequest const&
                 request) {
        return child_->AsyncDeleteOdbSubnet(cq, std::move(context),
                                            std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

StatusOr<google::cloud::oracledatabase::v1::ListExadbVmClustersResponse>
OracleDatabaseLogging::ListExadbVmClusters(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListExadbVmClustersRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](
          grpc::ClientContext& context, Options const& options,
          google::cloud::oracledatabase::v1::ListExadbVmClustersRequest const&
              request) {
        return child_->ListExadbVmClusters(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::ExadbVmCluster>
OracleDatabaseLogging::GetExadbVmCluster(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::GetExadbVmClusterRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::GetExadbVmClusterRequest const&
                 request) {
        return child_->GetExadbVmCluster(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncCreateExadbVmCluster(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::CreateExadbVmClusterRequest 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::oracledatabase::v1::CreateExadbVmClusterRequest const&
              request) {
        return child_->AsyncCreateExadbVmCluster(cq, std::move(context),
                                                 std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncDeleteExadbVmCluster(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::DeleteExadbVmClusterRequest 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::oracledatabase::v1::DeleteExadbVmClusterRequest const&
              request) {
        return child_->AsyncDeleteExadbVmCluster(cq, std::move(context),
                                                 std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncUpdateExadbVmCluster(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::UpdateExadbVmClusterRequest 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::oracledatabase::v1::UpdateExadbVmClusterRequest const&
              request) {
        return child_->AsyncUpdateExadbVmCluster(cq, std::move(context),
                                                 std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncRemoveVirtualMachineExadbVmCluster(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::
        RemoveVirtualMachineExadbVmClusterRequest 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::oracledatabase::v1::
                 RemoveVirtualMachineExadbVmClusterRequest const& request) {
        return child_->AsyncRemoveVirtualMachineExadbVmCluster(
            cq, std::move(context), std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

StatusOr<google::cloud::oracledatabase::v1::ListExascaleDbStorageVaultsResponse>
OracleDatabaseLogging::ListExascaleDbStorageVaults(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListExascaleDbStorageVaultsRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::
                 ListExascaleDbStorageVaultsRequest const& request) {
        return child_->ListExascaleDbStorageVaults(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::ExascaleDbStorageVault>
OracleDatabaseLogging::GetExascaleDbStorageVault(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::GetExascaleDbStorageVaultRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::
                 GetExascaleDbStorageVaultRequest const& request) {
        return child_->GetExascaleDbStorageVault(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncCreateExascaleDbStorageVault(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::
        CreateExascaleDbStorageVaultRequest 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::oracledatabase::v1::
                 CreateExascaleDbStorageVaultRequest const& request) {
        return child_->AsyncCreateExascaleDbStorageVault(
            cq, std::move(context), std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncDeleteExascaleDbStorageVault(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::
        DeleteExascaleDbStorageVaultRequest 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::oracledatabase::v1::
                 DeleteExascaleDbStorageVaultRequest const& request) {
        return child_->AsyncDeleteExascaleDbStorageVault(
            cq, std::move(context), std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

StatusOr<
    google::cloud::oracledatabase::v1::ListDbSystemInitialStorageSizesResponse>
OracleDatabaseLogging::ListDbSystemInitialStorageSizes(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::
        ListDbSystemInitialStorageSizesRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::
                 ListDbSystemInitialStorageSizesRequest const& request) {
        return child_->ListDbSystemInitialStorageSizes(context, options,
                                                       request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::ListDatabasesResponse>
OracleDatabaseLogging::ListDatabases(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListDatabasesRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::ListDatabasesRequest const&
                 request) {
        return child_->ListDatabases(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::Database>
OracleDatabaseLogging::GetDatabase(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::GetDatabaseRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::GetDatabaseRequest const&
                 request) {
        return child_->GetDatabase(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::ListPluggableDatabasesResponse>
OracleDatabaseLogging::ListPluggableDatabases(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListPluggableDatabasesRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::
                 ListPluggableDatabasesRequest const& request) {
        return child_->ListPluggableDatabases(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::PluggableDatabase>
OracleDatabaseLogging::GetPluggableDatabase(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::GetPluggableDatabaseRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](
          grpc::ClientContext& context, Options const& options,
          google::cloud::oracledatabase::v1::GetPluggableDatabaseRequest const&
              request) {
        return child_->GetPluggableDatabase(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::ListDbSystemsResponse>
OracleDatabaseLogging::ListDbSystems(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListDbSystemsRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::ListDbSystemsRequest const&
                 request) {
        return child_->ListDbSystems(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::DbSystem>
OracleDatabaseLogging::GetDbSystem(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::GetDbSystemRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::GetDbSystemRequest const&
                 request) {
        return child_->GetDbSystem(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncCreateDbSystem(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::CreateDbSystemRequest 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::oracledatabase::v1::CreateDbSystemRequest const&
                 request) {
        return child_->AsyncCreateDbSystem(cq, std::move(context),
                                           std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

future<StatusOr<google::longrunning::Operation>>
OracleDatabaseLogging::AsyncDeleteDbSystem(
    google::cloud::CompletionQueue& cq,
    std::shared_ptr<grpc::ClientContext> context,
    google::cloud::internal::ImmutableOptions options,
    google::cloud::oracledatabase::v1::DeleteDbSystemRequest 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::oracledatabase::v1::DeleteDbSystemRequest const&
                 request) {
        return child_->AsyncDeleteDbSystem(cq, std::move(context),
                                           std::move(options), request);
      },
      cq, std::move(context), std::move(options), request, __func__,
      tracing_options_);
}

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

StatusOr<google::cloud::oracledatabase::v1::ListDbVersionsResponse>
OracleDatabaseLogging::ListDbVersions(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListDbVersionsRequest const& request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::ListDbVersionsRequest const&
                 request) {
        return child_->ListDbVersions(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::oracledatabase::v1::ListDatabaseCharacterSetsResponse>
OracleDatabaseLogging::ListDatabaseCharacterSets(
    grpc::ClientContext& context, Options const& options,
    google::cloud::oracledatabase::v1::ListDatabaseCharacterSetsRequest const&
        request) {
  return google::cloud::internal::LogWrapper(
      [this](grpc::ClientContext& context, Options const& options,
             google::cloud::oracledatabase::v1::
                 ListDatabaseCharacterSetsRequest const& request) {
        return child_->ListDatabaseCharacterSets(context, options, request);
      },
      context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::location::ListLocationsResponse>
OracleDatabaseLogging::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> OracleDatabaseLogging::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>
OracleDatabaseLogging::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> OracleDatabaseLogging::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 OracleDatabaseLogging::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 OracleDatabaseLogging::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>>
OracleDatabaseLogging::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> OracleDatabaseLogging::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 oracledatabase_v1_internal
}  // namespace cloud
}  // namespace google

#include "google/cloud/ports_undef.inc"
