/**
 * Autogenerated by Thrift for /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated @nocommit
 */
#pragma once

#include <thrift/lib/cpp2/gen/client_h.h>

#include "fb303/thrift/gen-cpp2/fb303_core_types.h"

namespace apache { namespace thrift {
  class Cpp2RequestContext;
  namespace detail { namespace ac { struct ClientRequestContext; }}
  namespace transport { class THeader; }
}}

namespace facebook::fb303::cpp2 {
class BaseService;
} // namespace facebook::fb303::cpp2
namespace apache::thrift {

template <>
class Client<::facebook::fb303::cpp2::BaseService> : public apache::thrift::GeneratedAsyncClient {
 public:
  using apache::thrift::GeneratedAsyncClient::GeneratedAsyncClient;

  char const* getServiceName() const noexcept override {
    return "BaseService";
  }

  static const char* __fbthrift_thrift_uri() {
    return "facebook.com/fb303/BaseService";
  }


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  virtual void getStatus(std::unique_ptr<apache::thrift::RequestCallback> callback);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  virtual void getStatus(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback);
 protected:
  void fbthrift_serialize_and_send_getStatus(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, bool stealRpcOptions = false);
 public:

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  virtual ::facebook::fb303::cpp2::fb303_status sync_getStatus();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  virtual ::facebook::fb303::cpp2::fb303_status sync_getStatus(apache::thrift::RpcOptions& rpcOptions);

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  virtual folly::Future<::facebook::fb303::cpp2::fb303_status> future_getStatus();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  virtual folly::SemiFuture<::facebook::fb303::cpp2::fb303_status> semifuture_getStatus();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  virtual folly::Future<::facebook::fb303::cpp2::fb303_status> future_getStatus(apache::thrift::RpcOptions& rpcOptions);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  virtual folly::SemiFuture<::facebook::fb303::cpp2::fb303_status> semifuture_getStatus(apache::thrift::RpcOptions& rpcOptions);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  virtual folly::Future<std::pair<::facebook::fb303::cpp2::fb303_status, std::unique_ptr<apache::thrift::transport::THeader>>> header_future_getStatus(apache::thrift::RpcOptions& rpcOptions);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  virtual folly::SemiFuture<std::pair<::facebook::fb303::cpp2::fb303_status, std::unique_ptr<apache::thrift::transport::THeader>>> header_semifuture_getStatus(apache::thrift::RpcOptions& rpcOptions);

#if FOLLY_HAS_COROUTINES
#if __clang__
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  template <int = 0>
  folly::coro::Task<::facebook::fb303::cpp2::fb303_status> co_getStatus() {
    return co_getStatus<false>(nullptr);
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  template <int = 0>
  folly::coro::Task<::facebook::fb303::cpp2::fb303_status> co_getStatus(apache::thrift::RpcOptions& rpcOptions) {
    return co_getStatus<true>(&rpcOptions);
  }
#else
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  folly::coro::Task<::facebook::fb303::cpp2::fb303_status> co_getStatus() {
    co_return co_await folly::coro::detachOnCancel(semifuture_getStatus());
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  folly::coro::Task<::facebook::fb303::cpp2::fb303_status> co_getStatus(apache::thrift::RpcOptions& rpcOptions) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getStatus(rpcOptions));
  }
#endif
 private:
  template <bool hasRpcOptions>
  folly::coro::Task<::facebook::fb303::cpp2::fb303_status> co_getStatus(apache::thrift::RpcOptions* rpcOptions) {
    const folly::CancellationToken& cancelToken =
        co_await folly::coro::co_current_cancellation_token;
    const bool cancellable = cancelToken.canBeCancelled();
    apache::thrift::ClientReceiveState returnState;
    apache::thrift::ClientCoroCallback<false> callback(&returnState, co_await folly::coro::co_current_executor);
    auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
    auto [ctx, header] = getStatusCtx(rpcOptions);
    using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
    auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
    static apache::thrift::RpcOptions* defaultRpcOptions = new apache::thrift::RpcOptions();
    auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
    if (ctx != nullptr) {
      auto argsAsRefs = std::tie();
      ctx->processClientInterceptorsOnRequest(apache::thrift::ClientInterceptorOnRequestArguments(argsAsRefs)).throwUnlessValue();
    }
    if constexpr (hasRpcOptions) {
      fbthrift_serialize_and_send_getStatus(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback));
    } else {
      fbthrift_serialize_and_send_getStatus(*defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback));
    }
    if (cancellable) {
      folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
      co_await callback.co_waitUntilDone();
    } else {
      co_await callback.co_waitUntilDone();
    }
    if (ctx != nullptr) {
      ctx->processClientInterceptorsOnResponse().throwUnlessValue();
    }
    if (returnState.isException()) {
      co_yield folly::coro::co_error(std::move(returnState.exception()));
    }
    returnState.resetProtocolId(protocolId);
    returnState.resetCtx(std::move(ctx));
    SCOPE_EXIT {
      if (hasRpcOptions && returnState.header()) {
        auto* rheader = returnState.header();
        if (!rheader->getHeaders().empty()) {
          rpcOptions->setReadHeaders(rheader->releaseHeaders());
        }
        rpcOptions->setRoutingData(rheader->releaseRoutingData());
      }
    };
    ::facebook::fb303::cpp2::fb303_status _return;
    if (auto ew = recv_wrapped_getStatus(_return, returnState)) {
      co_yield folly::coro::co_error(std::move(ew));
    }
    co_return _return;
  }
 public:
#endif // FOLLY_HAS_COROUTINES

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  virtual void getStatus(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback);


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  static folly::exception_wrapper recv_wrapped_getStatus(::facebook::fb303::cpp2::fb303_status& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  static ::facebook::fb303::cpp2::fb303_status recv_getStatus(::apache::thrift::ClientReceiveState& state);
  // Mock friendly virtual instance method
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  virtual ::facebook::fb303::cpp2::fb303_status recv_instance_getStatus(::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatus"} */
  virtual folly::exception_wrapper recv_instance_wrapped_getStatus(::facebook::fb303::cpp2::fb303_status& _return, ::apache::thrift::ClientReceiveState& state);
 private:
  apache::thrift::SerializedRequest fbthrift_serialize_getStatus(const RpcOptions& rpcOptions, apache::thrift::transport::THeader& header, apache::thrift::ContextStack* contextStack);
  template <typename RpcOptions>
  void fbthrift_send_getStatus(apache::thrift::SerializedRequest&& request, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::RequestClientCallback::Ptr callback);
  std::pair<::apache::thrift::ContextStack::UniquePtr, std::shared_ptr<::apache::thrift::transport::THeader>> getStatusCtx(apache::thrift::RpcOptions* rpcOptions);
  template <typename CallbackType>
  folly::SemiFuture<::facebook::fb303::cpp2::fb303_status> fbthrift_semifuture_getStatus(apache::thrift::RpcOptions& rpcOptions);
 public:
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  virtual void getName(std::unique_ptr<apache::thrift::RequestCallback> callback);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  virtual void getName(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback);
 protected:
  void fbthrift_serialize_and_send_getName(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, bool stealRpcOptions = false);
 public:

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  virtual void sync_getName(::std::string& _return);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  virtual void sync_getName(apache::thrift::RpcOptions& rpcOptions, ::std::string& _return);

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  virtual folly::Future<::std::string> future_getName();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  virtual folly::SemiFuture<::std::string> semifuture_getName();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  virtual folly::Future<::std::string> future_getName(apache::thrift::RpcOptions& rpcOptions);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  virtual folly::SemiFuture<::std::string> semifuture_getName(apache::thrift::RpcOptions& rpcOptions);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  virtual folly::Future<std::pair<::std::string, std::unique_ptr<apache::thrift::transport::THeader>>> header_future_getName(apache::thrift::RpcOptions& rpcOptions);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  virtual folly::SemiFuture<std::pair<::std::string, std::unique_ptr<apache::thrift::transport::THeader>>> header_semifuture_getName(apache::thrift::RpcOptions& rpcOptions);

#if FOLLY_HAS_COROUTINES
#if __clang__
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  template <int = 0>
  folly::coro::Task<::std::string> co_getName() {
    return co_getName<false>(nullptr);
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  template <int = 0>
  folly::coro::Task<::std::string> co_getName(apache::thrift::RpcOptions& rpcOptions) {
    return co_getName<true>(&rpcOptions);
  }
#else
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  folly::coro::Task<::std::string> co_getName() {
    co_return co_await folly::coro::detachOnCancel(semifuture_getName());
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  folly::coro::Task<::std::string> co_getName(apache::thrift::RpcOptions& rpcOptions) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getName(rpcOptions));
  }
#endif
 private:
  template <bool hasRpcOptions>
  folly::coro::Task<::std::string> co_getName(apache::thrift::RpcOptions* rpcOptions) {
    const folly::CancellationToken& cancelToken =
        co_await folly::coro::co_current_cancellation_token;
    const bool cancellable = cancelToken.canBeCancelled();
    apache::thrift::ClientReceiveState returnState;
    apache::thrift::ClientCoroCallback<false> callback(&returnState, co_await folly::coro::co_current_executor);
    auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
    auto [ctx, header] = getNameCtx(rpcOptions);
    using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
    auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
    static apache::thrift::RpcOptions* defaultRpcOptions = new apache::thrift::RpcOptions();
    auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
    if (ctx != nullptr) {
      auto argsAsRefs = std::tie();
      ctx->processClientInterceptorsOnRequest(apache::thrift::ClientInterceptorOnRequestArguments(argsAsRefs)).throwUnlessValue();
    }
    if constexpr (hasRpcOptions) {
      fbthrift_serialize_and_send_getName(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback));
    } else {
      fbthrift_serialize_and_send_getName(*defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback));
    }
    if (cancellable) {
      folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
      co_await callback.co_waitUntilDone();
    } else {
      co_await callback.co_waitUntilDone();
    }
    if (ctx != nullptr) {
      ctx->processClientInterceptorsOnResponse().throwUnlessValue();
    }
    if (returnState.isException()) {
      co_yield folly::coro::co_error(std::move(returnState.exception()));
    }
    returnState.resetProtocolId(protocolId);
    returnState.resetCtx(std::move(ctx));
    SCOPE_EXIT {
      if (hasRpcOptions && returnState.header()) {
        auto* rheader = returnState.header();
        if (!rheader->getHeaders().empty()) {
          rpcOptions->setReadHeaders(rheader->releaseHeaders());
        }
        rpcOptions->setRoutingData(rheader->releaseRoutingData());
      }
    };
    ::std::string _return;
    if (auto ew = recv_wrapped_getName(_return, returnState)) {
      co_yield folly::coro::co_error(std::move(ew));
    }
    co_return _return;
  }
 public:
#endif // FOLLY_HAS_COROUTINES

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  virtual void getName(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback);


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  static folly::exception_wrapper recv_wrapped_getName(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  static void recv_getName(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
  // Mock friendly virtual instance method
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  virtual void recv_instance_getName(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getName"} */
  virtual folly::exception_wrapper recv_instance_wrapped_getName(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
 private:
  apache::thrift::SerializedRequest fbthrift_serialize_getName(const RpcOptions& rpcOptions, apache::thrift::transport::THeader& header, apache::thrift::ContextStack* contextStack);
  template <typename RpcOptions>
  void fbthrift_send_getName(apache::thrift::SerializedRequest&& request, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::RequestClientCallback::Ptr callback);
  std::pair<::apache::thrift::ContextStack::UniquePtr, std::shared_ptr<::apache::thrift::transport::THeader>> getNameCtx(apache::thrift::RpcOptions* rpcOptions);
  template <typename CallbackType>
  folly::SemiFuture<::std::string> fbthrift_semifuture_getName(apache::thrift::RpcOptions& rpcOptions);
 public:
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  virtual void getVersion(std::unique_ptr<apache::thrift::RequestCallback> callback);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  virtual void getVersion(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback);
 protected:
  void fbthrift_serialize_and_send_getVersion(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, bool stealRpcOptions = false);
 public:

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  virtual void sync_getVersion(::std::string& _return);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  virtual void sync_getVersion(apache::thrift::RpcOptions& rpcOptions, ::std::string& _return);

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  virtual folly::Future<::std::string> future_getVersion();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  virtual folly::SemiFuture<::std::string> semifuture_getVersion();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  virtual folly::Future<::std::string> future_getVersion(apache::thrift::RpcOptions& rpcOptions);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  virtual folly::SemiFuture<::std::string> semifuture_getVersion(apache::thrift::RpcOptions& rpcOptions);

#if FOLLY_HAS_COROUTINES
#if __clang__
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  template <int = 0>
  folly::coro::Task<::std::string> co_getVersion() {
    return co_getVersion<false>(nullptr);
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  template <int = 0>
  folly::coro::Task<::std::string> co_getVersion(apache::thrift::RpcOptions& rpcOptions) {
    return co_getVersion<true>(&rpcOptions);
  }
#else
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  folly::coro::Task<::std::string> co_getVersion() {
    co_return co_await folly::coro::detachOnCancel(semifuture_getVersion());
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  folly::coro::Task<::std::string> co_getVersion(apache::thrift::RpcOptions& rpcOptions) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getVersion(rpcOptions));
  }
#endif
 private:
  template <bool hasRpcOptions>
  folly::coro::Task<::std::string> co_getVersion(apache::thrift::RpcOptions* rpcOptions) {
    const folly::CancellationToken& cancelToken =
        co_await folly::coro::co_current_cancellation_token;
    const bool cancellable = cancelToken.canBeCancelled();
    apache::thrift::ClientReceiveState returnState;
    apache::thrift::ClientCoroCallback<false> callback(&returnState, co_await folly::coro::co_current_executor);
    auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
    auto [ctx, header] = getVersionCtx(rpcOptions);
    using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
    auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
    static apache::thrift::RpcOptions* defaultRpcOptions = new apache::thrift::RpcOptions();
    auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
    if (ctx != nullptr) {
      auto argsAsRefs = std::tie();
      ctx->processClientInterceptorsOnRequest(apache::thrift::ClientInterceptorOnRequestArguments(argsAsRefs)).throwUnlessValue();
    }
    if constexpr (hasRpcOptions) {
      fbthrift_serialize_and_send_getVersion(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback));
    } else {
      fbthrift_serialize_and_send_getVersion(*defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback));
    }
    if (cancellable) {
      folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
      co_await callback.co_waitUntilDone();
    } else {
      co_await callback.co_waitUntilDone();
    }
    if (ctx != nullptr) {
      ctx->processClientInterceptorsOnResponse().throwUnlessValue();
    }
    if (returnState.isException()) {
      co_yield folly::coro::co_error(std::move(returnState.exception()));
    }
    returnState.resetProtocolId(protocolId);
    returnState.resetCtx(std::move(ctx));
    SCOPE_EXIT {
      if (hasRpcOptions && returnState.header()) {
        auto* rheader = returnState.header();
        if (!rheader->getHeaders().empty()) {
          rpcOptions->setReadHeaders(rheader->releaseHeaders());
        }
        rpcOptions->setRoutingData(rheader->releaseRoutingData());
      }
    };
    ::std::string _return;
    if (auto ew = recv_wrapped_getVersion(_return, returnState)) {
      co_yield folly::coro::co_error(std::move(ew));
    }
    co_return _return;
  }
 public:
#endif // FOLLY_HAS_COROUTINES

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  virtual void getVersion(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback);


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  static folly::exception_wrapper recv_wrapped_getVersion(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  static void recv_getVersion(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
  // Mock friendly virtual instance method
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  virtual void recv_instance_getVersion(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getVersion"} */
  virtual folly::exception_wrapper recv_instance_wrapped_getVersion(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
 private:
  apache::thrift::SerializedRequest fbthrift_serialize_getVersion(const RpcOptions& rpcOptions, apache::thrift::transport::THeader& header, apache::thrift::ContextStack* contextStack);
  template <typename RpcOptions>
  void fbthrift_send_getVersion(apache::thrift::SerializedRequest&& request, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::RequestClientCallback::Ptr callback);
  std::pair<::apache::thrift::ContextStack::UniquePtr, std::shared_ptr<::apache::thrift::transport::THeader>> getVersionCtx(apache::thrift::RpcOptions* rpcOptions);
  template <typename CallbackType>
  folly::SemiFuture<::std::string> fbthrift_semifuture_getVersion(apache::thrift::RpcOptions& rpcOptions);
 public:
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  virtual void getStatusDetails(std::unique_ptr<apache::thrift::RequestCallback> callback);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  virtual void getStatusDetails(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback);
 protected:
  void fbthrift_serialize_and_send_getStatusDetails(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, bool stealRpcOptions = false);
 public:

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  virtual void sync_getStatusDetails(::std::string& _return);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  virtual void sync_getStatusDetails(apache::thrift::RpcOptions& rpcOptions, ::std::string& _return);

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  virtual folly::Future<::std::string> future_getStatusDetails();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  virtual folly::SemiFuture<::std::string> semifuture_getStatusDetails();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  virtual folly::Future<::std::string> future_getStatusDetails(apache::thrift::RpcOptions& rpcOptions);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  virtual folly::SemiFuture<::std::string> semifuture_getStatusDetails(apache::thrift::RpcOptions& rpcOptions);

#if FOLLY_HAS_COROUTINES
#if __clang__
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  template <int = 0>
  folly::coro::Task<::std::string> co_getStatusDetails() {
    return co_getStatusDetails<false>(nullptr);
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  template <int = 0>
  folly::coro::Task<::std::string> co_getStatusDetails(apache::thrift::RpcOptions& rpcOptions) {
    return co_getStatusDetails<true>(&rpcOptions);
  }
#else
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  folly::coro::Task<::std::string> co_getStatusDetails() {
    co_return co_await folly::coro::detachOnCancel(semifuture_getStatusDetails());
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  folly::coro::Task<::std::string> co_getStatusDetails(apache::thrift::RpcOptions& rpcOptions) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getStatusDetails(rpcOptions));
  }
#endif
 private:
  template <bool hasRpcOptions>
  folly::coro::Task<::std::string> co_getStatusDetails(apache::thrift::RpcOptions* rpcOptions) {
    const folly::CancellationToken& cancelToken =
        co_await folly::coro::co_current_cancellation_token;
    const bool cancellable = cancelToken.canBeCancelled();
    apache::thrift::ClientReceiveState returnState;
    apache::thrift::ClientCoroCallback<false> callback(&returnState, co_await folly::coro::co_current_executor);
    auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
    auto [ctx, header] = getStatusDetailsCtx(rpcOptions);
    using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
    auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
    static apache::thrift::RpcOptions* defaultRpcOptions = new apache::thrift::RpcOptions();
    auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
    if (ctx != nullptr) {
      auto argsAsRefs = std::tie();
      ctx->processClientInterceptorsOnRequest(apache::thrift::ClientInterceptorOnRequestArguments(argsAsRefs)).throwUnlessValue();
    }
    if constexpr (hasRpcOptions) {
      fbthrift_serialize_and_send_getStatusDetails(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback));
    } else {
      fbthrift_serialize_and_send_getStatusDetails(*defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback));
    }
    if (cancellable) {
      folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
      co_await callback.co_waitUntilDone();
    } else {
      co_await callback.co_waitUntilDone();
    }
    if (ctx != nullptr) {
      ctx->processClientInterceptorsOnResponse().throwUnlessValue();
    }
    if (returnState.isException()) {
      co_yield folly::coro::co_error(std::move(returnState.exception()));
    }
    returnState.resetProtocolId(protocolId);
    returnState.resetCtx(std::move(ctx));
    SCOPE_EXIT {
      if (hasRpcOptions && returnState.header()) {
        auto* rheader = returnState.header();
        if (!rheader->getHeaders().empty()) {
          rpcOptions->setReadHeaders(rheader->releaseHeaders());
        }
        rpcOptions->setRoutingData(rheader->releaseRoutingData());
      }
    };
    ::std::string _return;
    if (auto ew = recv_wrapped_getStatusDetails(_return, returnState)) {
      co_yield folly::coro::co_error(std::move(ew));
    }
    co_return _return;
  }
 public:
#endif // FOLLY_HAS_COROUTINES

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  virtual void getStatusDetails(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback);


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  static folly::exception_wrapper recv_wrapped_getStatusDetails(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  static void recv_getStatusDetails(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
  // Mock friendly virtual instance method
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  virtual void recv_instance_getStatusDetails(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getStatusDetails"} */
  virtual folly::exception_wrapper recv_instance_wrapped_getStatusDetails(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
 private:
  apache::thrift::SerializedRequest fbthrift_serialize_getStatusDetails(const RpcOptions& rpcOptions, apache::thrift::transport::THeader& header, apache::thrift::ContextStack* contextStack);
  template <typename RpcOptions>
  void fbthrift_send_getStatusDetails(apache::thrift::SerializedRequest&& request, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::RequestClientCallback::Ptr callback);
  std::pair<::apache::thrift::ContextStack::UniquePtr, std::shared_ptr<::apache::thrift::transport::THeader>> getStatusDetailsCtx(apache::thrift::RpcOptions* rpcOptions);
  template <typename CallbackType>
  folly::SemiFuture<::std::string> fbthrift_semifuture_getStatusDetails(apache::thrift::RpcOptions& rpcOptions);
 public:
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  virtual void getCounters(std::unique_ptr<apache::thrift::RequestCallback> callback);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  virtual void getCounters(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback);
 protected:
  void fbthrift_serialize_and_send_getCounters(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, bool stealRpcOptions = false);
 public:

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  virtual void sync_getCounters(::std::map<::std::string, ::std::int64_t>& _return);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  virtual void sync_getCounters(apache::thrift::RpcOptions& rpcOptions, ::std::map<::std::string, ::std::int64_t>& _return);

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  virtual folly::Future<::std::map<::std::string, ::std::int64_t>> future_getCounters();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  virtual folly::SemiFuture<::std::map<::std::string, ::std::int64_t>> semifuture_getCounters();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  virtual folly::Future<::std::map<::std::string, ::std::int64_t>> future_getCounters(apache::thrift::RpcOptions& rpcOptions);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  virtual folly::SemiFuture<::std::map<::std::string, ::std::int64_t>> semifuture_getCounters(apache::thrift::RpcOptions& rpcOptions);

#if FOLLY_HAS_COROUTINES
#if __clang__
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  template <int = 0>
  folly::coro::Task<::std::map<::std::string, ::std::int64_t>> co_getCounters() {
    return co_getCounters<false>(nullptr);
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  template <int = 0>
  folly::coro::Task<::std::map<::std::string, ::std::int64_t>> co_getCounters(apache::thrift::RpcOptions& rpcOptions) {
    return co_getCounters<true>(&rpcOptions);
  }
#else
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  folly::coro::Task<::std::map<::std::string, ::std::int64_t>> co_getCounters() {
    co_return co_await folly::coro::detachOnCancel(semifuture_getCounters());
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  folly::coro::Task<::std::map<::std::string, ::std::int64_t>> co_getCounters(apache::thrift::RpcOptions& rpcOptions) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getCounters(rpcOptions));
  }
#endif
 private:
  template <bool hasRpcOptions>
  folly::coro::Task<::std::map<::std::string, ::std::int64_t>> co_getCounters(apache::thrift::RpcOptions* rpcOptions) {
    const folly::CancellationToken& cancelToken =
        co_await folly::coro::co_current_cancellation_token;
    const bool cancellable = cancelToken.canBeCancelled();
    apache::thrift::ClientReceiveState returnState;
    apache::thrift::ClientCoroCallback<false> callback(&returnState, co_await folly::coro::co_current_executor);
    auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
    auto [ctx, header] = getCountersCtx(rpcOptions);
    using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
    auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
    static apache::thrift::RpcOptions* defaultRpcOptions = new apache::thrift::RpcOptions();
    auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
    if (ctx != nullptr) {
      auto argsAsRefs = std::tie();
      ctx->processClientInterceptorsOnRequest(apache::thrift::ClientInterceptorOnRequestArguments(argsAsRefs)).throwUnlessValue();
    }
    if constexpr (hasRpcOptions) {
      fbthrift_serialize_and_send_getCounters(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback));
    } else {
      fbthrift_serialize_and_send_getCounters(*defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback));
    }
    if (cancellable) {
      folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
      co_await callback.co_waitUntilDone();
    } else {
      co_await callback.co_waitUntilDone();
    }
    if (ctx != nullptr) {
      ctx->processClientInterceptorsOnResponse().throwUnlessValue();
    }
    if (returnState.isException()) {
      co_yield folly::coro::co_error(std::move(returnState.exception()));
    }
    returnState.resetProtocolId(protocolId);
    returnState.resetCtx(std::move(ctx));
    SCOPE_EXIT {
      if (hasRpcOptions && returnState.header()) {
        auto* rheader = returnState.header();
        if (!rheader->getHeaders().empty()) {
          rpcOptions->setReadHeaders(rheader->releaseHeaders());
        }
        rpcOptions->setRoutingData(rheader->releaseRoutingData());
      }
    };
    ::std::map<::std::string, ::std::int64_t> _return;
    if (auto ew = recv_wrapped_getCounters(_return, returnState)) {
      co_yield folly::coro::co_error(std::move(ew));
    }
    co_return _return;
  }
 public:
#endif // FOLLY_HAS_COROUTINES

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  virtual void getCounters(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback);


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  static folly::exception_wrapper recv_wrapped_getCounters(::std::map<::std::string, ::std::int64_t>& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  static void recv_getCounters(::std::map<::std::string, ::std::int64_t>& _return, ::apache::thrift::ClientReceiveState& state);
  // Mock friendly virtual instance method
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  virtual void recv_instance_getCounters(::std::map<::std::string, ::std::int64_t>& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounters"} */
  virtual folly::exception_wrapper recv_instance_wrapped_getCounters(::std::map<::std::string, ::std::int64_t>& _return, ::apache::thrift::ClientReceiveState& state);
 private:
  apache::thrift::SerializedRequest fbthrift_serialize_getCounters(const RpcOptions& rpcOptions, apache::thrift::transport::THeader& header, apache::thrift::ContextStack* contextStack);
  template <typename RpcOptions>
  void fbthrift_send_getCounters(apache::thrift::SerializedRequest&& request, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::RequestClientCallback::Ptr callback);
  std::pair<::apache::thrift::ContextStack::UniquePtr, std::shared_ptr<::apache::thrift::transport::THeader>> getCountersCtx(apache::thrift::RpcOptions* rpcOptions);
  template <typename CallbackType>
  folly::SemiFuture<::std::map<::std::string, ::std::int64_t>> fbthrift_semifuture_getCounters(apache::thrift::RpcOptions& rpcOptions);
 public:
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  virtual void getRegexCounters(std::unique_ptr<apache::thrift::RequestCallback> callback, const ::std::string& p_regex);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  virtual void getRegexCounters(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback, const ::std::string& p_regex);
 protected:
  void fbthrift_serialize_and_send_getRegexCounters(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, const ::std::string& p_regex, bool stealRpcOptions = false);
 public:

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  virtual void sync_getRegexCounters(::std::map<::std::string, ::std::int64_t>& _return, const ::std::string& p_regex);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  virtual void sync_getRegexCounters(apache::thrift::RpcOptions& rpcOptions, ::std::map<::std::string, ::std::int64_t>& _return, const ::std::string& p_regex);

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  virtual folly::Future<::std::map<::std::string, ::std::int64_t>> future_getRegexCounters(const ::std::string& p_regex);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  virtual folly::SemiFuture<::std::map<::std::string, ::std::int64_t>> semifuture_getRegexCounters(const ::std::string& p_regex);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  virtual folly::Future<::std::map<::std::string, ::std::int64_t>> future_getRegexCounters(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_regex);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  virtual folly::SemiFuture<::std::map<::std::string, ::std::int64_t>> semifuture_getRegexCounters(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_regex);

#if FOLLY_HAS_COROUTINES
#if __clang__
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  template <int = 0>
  folly::coro::Task<::std::map<::std::string, ::std::int64_t>> co_getRegexCounters(const ::std::string& p_regex) {
    return co_getRegexCounters<false>(nullptr, p_regex);
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  template <int = 0>
  folly::coro::Task<::std::map<::std::string, ::std::int64_t>> co_getRegexCounters(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_regex) {
    return co_getRegexCounters<true>(&rpcOptions, p_regex);
  }
#else
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  folly::coro::Task<::std::map<::std::string, ::std::int64_t>> co_getRegexCounters(const ::std::string& p_regex) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getRegexCounters(p_regex));
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  folly::coro::Task<::std::map<::std::string, ::std::int64_t>> co_getRegexCounters(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_regex) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getRegexCounters(rpcOptions, p_regex));
  }
#endif
 private:
  template <bool hasRpcOptions>
  folly::coro::Task<::std::map<::std::string, ::std::int64_t>> co_getRegexCounters(apache::thrift::RpcOptions* rpcOptions, const ::std::string& p_regex) {
    const folly::CancellationToken& cancelToken =
        co_await folly::coro::co_current_cancellation_token;
    const bool cancellable = cancelToken.canBeCancelled();
    apache::thrift::ClientReceiveState returnState;
    apache::thrift::ClientCoroCallback<false> callback(&returnState, co_await folly::coro::co_current_executor);
    auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
    auto [ctx, header] = getRegexCountersCtx(rpcOptions);
    using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
    auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
    static apache::thrift::RpcOptions* defaultRpcOptions = new apache::thrift::RpcOptions();
    auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
    if (ctx != nullptr) {
      auto argsAsRefs = std::tie(p_regex);
      ctx->processClientInterceptorsOnRequest(apache::thrift::ClientInterceptorOnRequestArguments(argsAsRefs)).throwUnlessValue();
    }
    if constexpr (hasRpcOptions) {
      fbthrift_serialize_and_send_getRegexCounters(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_regex);
    } else {
      fbthrift_serialize_and_send_getRegexCounters(*defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_regex);
    }
    if (cancellable) {
      folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
      co_await callback.co_waitUntilDone();
    } else {
      co_await callback.co_waitUntilDone();
    }
    if (ctx != nullptr) {
      ctx->processClientInterceptorsOnResponse().throwUnlessValue();
    }
    if (returnState.isException()) {
      co_yield folly::coro::co_error(std::move(returnState.exception()));
    }
    returnState.resetProtocolId(protocolId);
    returnState.resetCtx(std::move(ctx));
    SCOPE_EXIT {
      if (hasRpcOptions && returnState.header()) {
        auto* rheader = returnState.header();
        if (!rheader->getHeaders().empty()) {
          rpcOptions->setReadHeaders(rheader->releaseHeaders());
        }
        rpcOptions->setRoutingData(rheader->releaseRoutingData());
      }
    };
    ::std::map<::std::string, ::std::int64_t> _return;
    if (auto ew = recv_wrapped_getRegexCounters(_return, returnState)) {
      co_yield folly::coro::co_error(std::move(ew));
    }
    co_return _return;
  }
 public:
#endif // FOLLY_HAS_COROUTINES

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  virtual void getRegexCounters(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback, const ::std::string& p_regex);


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  static folly::exception_wrapper recv_wrapped_getRegexCounters(::std::map<::std::string, ::std::int64_t>& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  static void recv_getRegexCounters(::std::map<::std::string, ::std::int64_t>& _return, ::apache::thrift::ClientReceiveState& state);
  // Mock friendly virtual instance method
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  virtual void recv_instance_getRegexCounters(::std::map<::std::string, ::std::int64_t>& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexCounters"} */
  virtual folly::exception_wrapper recv_instance_wrapped_getRegexCounters(::std::map<::std::string, ::std::int64_t>& _return, ::apache::thrift::ClientReceiveState& state);
 private:
  apache::thrift::SerializedRequest fbthrift_serialize_getRegexCounters(const RpcOptions& rpcOptions, apache::thrift::transport::THeader& header, apache::thrift::ContextStack* contextStack, const ::std::string& p_regex);
  template <typename RpcOptions>
  void fbthrift_send_getRegexCounters(apache::thrift::SerializedRequest&& request, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::RequestClientCallback::Ptr callback);
  std::pair<::apache::thrift::ContextStack::UniquePtr, std::shared_ptr<::apache::thrift::transport::THeader>> getRegexCountersCtx(apache::thrift::RpcOptions* rpcOptions);
  template <typename CallbackType>
  folly::SemiFuture<::std::map<::std::string, ::std::int64_t>> fbthrift_semifuture_getRegexCounters(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_regex);
 public:
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  virtual void getSelectedCounters(std::unique_ptr<apache::thrift::RequestCallback> callback, const ::std::vector<::std::string>& p_keys);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  virtual void getSelectedCounters(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback, const ::std::vector<::std::string>& p_keys);
 protected:
  void fbthrift_serialize_and_send_getSelectedCounters(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, const ::std::vector<::std::string>& p_keys, bool stealRpcOptions = false);
 public:

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  virtual void sync_getSelectedCounters(::std::map<::std::string, ::std::int64_t>& _return, const ::std::vector<::std::string>& p_keys);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  virtual void sync_getSelectedCounters(apache::thrift::RpcOptions& rpcOptions, ::std::map<::std::string, ::std::int64_t>& _return, const ::std::vector<::std::string>& p_keys);

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  virtual folly::Future<::std::map<::std::string, ::std::int64_t>> future_getSelectedCounters(const ::std::vector<::std::string>& p_keys);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  virtual folly::SemiFuture<::std::map<::std::string, ::std::int64_t>> semifuture_getSelectedCounters(const ::std::vector<::std::string>& p_keys);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  virtual folly::Future<::std::map<::std::string, ::std::int64_t>> future_getSelectedCounters(apache::thrift::RpcOptions& rpcOptions, const ::std::vector<::std::string>& p_keys);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  virtual folly::SemiFuture<::std::map<::std::string, ::std::int64_t>> semifuture_getSelectedCounters(apache::thrift::RpcOptions& rpcOptions, const ::std::vector<::std::string>& p_keys);

#if FOLLY_HAS_COROUTINES
#if __clang__
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  template <int = 0>
  folly::coro::Task<::std::map<::std::string, ::std::int64_t>> co_getSelectedCounters(const ::std::vector<::std::string>& p_keys) {
    return co_getSelectedCounters<false>(nullptr, p_keys);
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  template <int = 0>
  folly::coro::Task<::std::map<::std::string, ::std::int64_t>> co_getSelectedCounters(apache::thrift::RpcOptions& rpcOptions, const ::std::vector<::std::string>& p_keys) {
    return co_getSelectedCounters<true>(&rpcOptions, p_keys);
  }
#else
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  folly::coro::Task<::std::map<::std::string, ::std::int64_t>> co_getSelectedCounters(const ::std::vector<::std::string>& p_keys) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getSelectedCounters(p_keys));
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  folly::coro::Task<::std::map<::std::string, ::std::int64_t>> co_getSelectedCounters(apache::thrift::RpcOptions& rpcOptions, const ::std::vector<::std::string>& p_keys) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getSelectedCounters(rpcOptions, p_keys));
  }
#endif
 private:
  template <bool hasRpcOptions>
  folly::coro::Task<::std::map<::std::string, ::std::int64_t>> co_getSelectedCounters(apache::thrift::RpcOptions* rpcOptions, const ::std::vector<::std::string>& p_keys) {
    const folly::CancellationToken& cancelToken =
        co_await folly::coro::co_current_cancellation_token;
    const bool cancellable = cancelToken.canBeCancelled();
    apache::thrift::ClientReceiveState returnState;
    apache::thrift::ClientCoroCallback<false> callback(&returnState, co_await folly::coro::co_current_executor);
    auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
    auto [ctx, header] = getSelectedCountersCtx(rpcOptions);
    using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
    auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
    static apache::thrift::RpcOptions* defaultRpcOptions = new apache::thrift::RpcOptions();
    auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
    if (ctx != nullptr) {
      auto argsAsRefs = std::tie(p_keys);
      ctx->processClientInterceptorsOnRequest(apache::thrift::ClientInterceptorOnRequestArguments(argsAsRefs)).throwUnlessValue();
    }
    if constexpr (hasRpcOptions) {
      fbthrift_serialize_and_send_getSelectedCounters(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_keys);
    } else {
      fbthrift_serialize_and_send_getSelectedCounters(*defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_keys);
    }
    if (cancellable) {
      folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
      co_await callback.co_waitUntilDone();
    } else {
      co_await callback.co_waitUntilDone();
    }
    if (ctx != nullptr) {
      ctx->processClientInterceptorsOnResponse().throwUnlessValue();
    }
    if (returnState.isException()) {
      co_yield folly::coro::co_error(std::move(returnState.exception()));
    }
    returnState.resetProtocolId(protocolId);
    returnState.resetCtx(std::move(ctx));
    SCOPE_EXIT {
      if (hasRpcOptions && returnState.header()) {
        auto* rheader = returnState.header();
        if (!rheader->getHeaders().empty()) {
          rpcOptions->setReadHeaders(rheader->releaseHeaders());
        }
        rpcOptions->setRoutingData(rheader->releaseRoutingData());
      }
    };
    ::std::map<::std::string, ::std::int64_t> _return;
    if (auto ew = recv_wrapped_getSelectedCounters(_return, returnState)) {
      co_yield folly::coro::co_error(std::move(ew));
    }
    co_return _return;
  }
 public:
#endif // FOLLY_HAS_COROUTINES

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  virtual void getSelectedCounters(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback, const ::std::vector<::std::string>& p_keys);


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  static folly::exception_wrapper recv_wrapped_getSelectedCounters(::std::map<::std::string, ::std::int64_t>& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  static void recv_getSelectedCounters(::std::map<::std::string, ::std::int64_t>& _return, ::apache::thrift::ClientReceiveState& state);
  // Mock friendly virtual instance method
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  virtual void recv_instance_getSelectedCounters(::std::map<::std::string, ::std::int64_t>& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedCounters"} */
  virtual folly::exception_wrapper recv_instance_wrapped_getSelectedCounters(::std::map<::std::string, ::std::int64_t>& _return, ::apache::thrift::ClientReceiveState& state);
 private:
  apache::thrift::SerializedRequest fbthrift_serialize_getSelectedCounters(const RpcOptions& rpcOptions, apache::thrift::transport::THeader& header, apache::thrift::ContextStack* contextStack, const ::std::vector<::std::string>& p_keys);
  template <typename RpcOptions>
  void fbthrift_send_getSelectedCounters(apache::thrift::SerializedRequest&& request, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::RequestClientCallback::Ptr callback);
  std::pair<::apache::thrift::ContextStack::UniquePtr, std::shared_ptr<::apache::thrift::transport::THeader>> getSelectedCountersCtx(apache::thrift::RpcOptions* rpcOptions);
  template <typename CallbackType>
  folly::SemiFuture<::std::map<::std::string, ::std::int64_t>> fbthrift_semifuture_getSelectedCounters(apache::thrift::RpcOptions& rpcOptions, const ::std::vector<::std::string>& p_keys);
 public:
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  virtual void getCounter(std::unique_ptr<apache::thrift::RequestCallback> callback, const ::std::string& p_key);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  virtual void getCounter(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback, const ::std::string& p_key);
 protected:
  void fbthrift_serialize_and_send_getCounter(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, const ::std::string& p_key, bool stealRpcOptions = false);
 public:

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  virtual ::std::int64_t sync_getCounter(const ::std::string& p_key);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  virtual ::std::int64_t sync_getCounter(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key);

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  virtual folly::Future<::std::int64_t> future_getCounter(const ::std::string& p_key);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  virtual folly::SemiFuture<::std::int64_t> semifuture_getCounter(const ::std::string& p_key);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  virtual folly::Future<::std::int64_t> future_getCounter(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  virtual folly::SemiFuture<::std::int64_t> semifuture_getCounter(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key);

#if FOLLY_HAS_COROUTINES
#if __clang__
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  template <int = 0>
  folly::coro::Task<::std::int64_t> co_getCounter(const ::std::string& p_key) {
    return co_getCounter<false>(nullptr, p_key);
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  template <int = 0>
  folly::coro::Task<::std::int64_t> co_getCounter(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key) {
    return co_getCounter<true>(&rpcOptions, p_key);
  }
#else
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  folly::coro::Task<::std::int64_t> co_getCounter(const ::std::string& p_key) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getCounter(p_key));
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  folly::coro::Task<::std::int64_t> co_getCounter(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getCounter(rpcOptions, p_key));
  }
#endif
 private:
  template <bool hasRpcOptions>
  folly::coro::Task<::std::int64_t> co_getCounter(apache::thrift::RpcOptions* rpcOptions, const ::std::string& p_key) {
    const folly::CancellationToken& cancelToken =
        co_await folly::coro::co_current_cancellation_token;
    const bool cancellable = cancelToken.canBeCancelled();
    apache::thrift::ClientReceiveState returnState;
    apache::thrift::ClientCoroCallback<false> callback(&returnState, co_await folly::coro::co_current_executor);
    auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
    auto [ctx, header] = getCounterCtx(rpcOptions);
    using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
    auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
    static apache::thrift::RpcOptions* defaultRpcOptions = new apache::thrift::RpcOptions();
    auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
    if (ctx != nullptr) {
      auto argsAsRefs = std::tie(p_key);
      ctx->processClientInterceptorsOnRequest(apache::thrift::ClientInterceptorOnRequestArguments(argsAsRefs)).throwUnlessValue();
    }
    if constexpr (hasRpcOptions) {
      fbthrift_serialize_and_send_getCounter(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_key);
    } else {
      fbthrift_serialize_and_send_getCounter(*defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_key);
    }
    if (cancellable) {
      folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
      co_await callback.co_waitUntilDone();
    } else {
      co_await callback.co_waitUntilDone();
    }
    if (ctx != nullptr) {
      ctx->processClientInterceptorsOnResponse().throwUnlessValue();
    }
    if (returnState.isException()) {
      co_yield folly::coro::co_error(std::move(returnState.exception()));
    }
    returnState.resetProtocolId(protocolId);
    returnState.resetCtx(std::move(ctx));
    SCOPE_EXIT {
      if (hasRpcOptions && returnState.header()) {
        auto* rheader = returnState.header();
        if (!rheader->getHeaders().empty()) {
          rpcOptions->setReadHeaders(rheader->releaseHeaders());
        }
        rpcOptions->setRoutingData(rheader->releaseRoutingData());
      }
    };
    ::std::int64_t _return;
    if (auto ew = recv_wrapped_getCounter(_return, returnState)) {
      co_yield folly::coro::co_error(std::move(ew));
    }
    co_return _return;
  }
 public:
#endif // FOLLY_HAS_COROUTINES

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  virtual void getCounter(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback, const ::std::string& p_key);


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  static folly::exception_wrapper recv_wrapped_getCounter(::std::int64_t& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  static ::std::int64_t recv_getCounter(::apache::thrift::ClientReceiveState& state);
  // Mock friendly virtual instance method
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  virtual ::std::int64_t recv_instance_getCounter(::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getCounter"} */
  virtual folly::exception_wrapper recv_instance_wrapped_getCounter(::std::int64_t& _return, ::apache::thrift::ClientReceiveState& state);
 private:
  apache::thrift::SerializedRequest fbthrift_serialize_getCounter(const RpcOptions& rpcOptions, apache::thrift::transport::THeader& header, apache::thrift::ContextStack* contextStack, const ::std::string& p_key);
  template <typename RpcOptions>
  void fbthrift_send_getCounter(apache::thrift::SerializedRequest&& request, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::RequestClientCallback::Ptr callback);
  std::pair<::apache::thrift::ContextStack::UniquePtr, std::shared_ptr<::apache::thrift::transport::THeader>> getCounterCtx(apache::thrift::RpcOptions* rpcOptions);
  template <typename CallbackType>
  folly::SemiFuture<::std::int64_t> fbthrift_semifuture_getCounter(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key);
 public:
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  virtual void getExportedValues(std::unique_ptr<apache::thrift::RequestCallback> callback);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  virtual void getExportedValues(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback);
 protected:
  void fbthrift_serialize_and_send_getExportedValues(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, bool stealRpcOptions = false);
 public:

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  virtual void sync_getExportedValues(::std::map<::std::string, ::std::string>& _return);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  virtual void sync_getExportedValues(apache::thrift::RpcOptions& rpcOptions, ::std::map<::std::string, ::std::string>& _return);

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  virtual folly::Future<::std::map<::std::string, ::std::string>> future_getExportedValues();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  virtual folly::SemiFuture<::std::map<::std::string, ::std::string>> semifuture_getExportedValues();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  virtual folly::Future<::std::map<::std::string, ::std::string>> future_getExportedValues(apache::thrift::RpcOptions& rpcOptions);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  virtual folly::SemiFuture<::std::map<::std::string, ::std::string>> semifuture_getExportedValues(apache::thrift::RpcOptions& rpcOptions);

#if FOLLY_HAS_COROUTINES
#if __clang__
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  template <int = 0>
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getExportedValues() {
    return co_getExportedValues<false>(nullptr);
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  template <int = 0>
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getExportedValues(apache::thrift::RpcOptions& rpcOptions) {
    return co_getExportedValues<true>(&rpcOptions);
  }
#else
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getExportedValues() {
    co_return co_await folly::coro::detachOnCancel(semifuture_getExportedValues());
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getExportedValues(apache::thrift::RpcOptions& rpcOptions) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getExportedValues(rpcOptions));
  }
#endif
 private:
  template <bool hasRpcOptions>
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getExportedValues(apache::thrift::RpcOptions* rpcOptions) {
    const folly::CancellationToken& cancelToken =
        co_await folly::coro::co_current_cancellation_token;
    const bool cancellable = cancelToken.canBeCancelled();
    apache::thrift::ClientReceiveState returnState;
    apache::thrift::ClientCoroCallback<false> callback(&returnState, co_await folly::coro::co_current_executor);
    auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
    auto [ctx, header] = getExportedValuesCtx(rpcOptions);
    using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
    auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
    static apache::thrift::RpcOptions* defaultRpcOptions = new apache::thrift::RpcOptions();
    auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
    if (ctx != nullptr) {
      auto argsAsRefs = std::tie();
      ctx->processClientInterceptorsOnRequest(apache::thrift::ClientInterceptorOnRequestArguments(argsAsRefs)).throwUnlessValue();
    }
    if constexpr (hasRpcOptions) {
      fbthrift_serialize_and_send_getExportedValues(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback));
    } else {
      fbthrift_serialize_and_send_getExportedValues(*defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback));
    }
    if (cancellable) {
      folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
      co_await callback.co_waitUntilDone();
    } else {
      co_await callback.co_waitUntilDone();
    }
    if (ctx != nullptr) {
      ctx->processClientInterceptorsOnResponse().throwUnlessValue();
    }
    if (returnState.isException()) {
      co_yield folly::coro::co_error(std::move(returnState.exception()));
    }
    returnState.resetProtocolId(protocolId);
    returnState.resetCtx(std::move(ctx));
    SCOPE_EXIT {
      if (hasRpcOptions && returnState.header()) {
        auto* rheader = returnState.header();
        if (!rheader->getHeaders().empty()) {
          rpcOptions->setReadHeaders(rheader->releaseHeaders());
        }
        rpcOptions->setRoutingData(rheader->releaseRoutingData());
      }
    };
    ::std::map<::std::string, ::std::string> _return;
    if (auto ew = recv_wrapped_getExportedValues(_return, returnState)) {
      co_yield folly::coro::co_error(std::move(ew));
    }
    co_return _return;
  }
 public:
#endif // FOLLY_HAS_COROUTINES

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  virtual void getExportedValues(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback);


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  static folly::exception_wrapper recv_wrapped_getExportedValues(::std::map<::std::string, ::std::string>& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  static void recv_getExportedValues(::std::map<::std::string, ::std::string>& _return, ::apache::thrift::ClientReceiveState& state);
  // Mock friendly virtual instance method
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  virtual void recv_instance_getExportedValues(::std::map<::std::string, ::std::string>& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValues"} */
  virtual folly::exception_wrapper recv_instance_wrapped_getExportedValues(::std::map<::std::string, ::std::string>& _return, ::apache::thrift::ClientReceiveState& state);
 private:
  apache::thrift::SerializedRequest fbthrift_serialize_getExportedValues(const RpcOptions& rpcOptions, apache::thrift::transport::THeader& header, apache::thrift::ContextStack* contextStack);
  template <typename RpcOptions>
  void fbthrift_send_getExportedValues(apache::thrift::SerializedRequest&& request, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::RequestClientCallback::Ptr callback);
  std::pair<::apache::thrift::ContextStack::UniquePtr, std::shared_ptr<::apache::thrift::transport::THeader>> getExportedValuesCtx(apache::thrift::RpcOptions* rpcOptions);
  template <typename CallbackType>
  folly::SemiFuture<::std::map<::std::string, ::std::string>> fbthrift_semifuture_getExportedValues(apache::thrift::RpcOptions& rpcOptions);
 public:
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  virtual void getSelectedExportedValues(std::unique_ptr<apache::thrift::RequestCallback> callback, const ::std::vector<::std::string>& p_keys);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  virtual void getSelectedExportedValues(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback, const ::std::vector<::std::string>& p_keys);
 protected:
  void fbthrift_serialize_and_send_getSelectedExportedValues(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, const ::std::vector<::std::string>& p_keys, bool stealRpcOptions = false);
 public:

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  virtual void sync_getSelectedExportedValues(::std::map<::std::string, ::std::string>& _return, const ::std::vector<::std::string>& p_keys);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  virtual void sync_getSelectedExportedValues(apache::thrift::RpcOptions& rpcOptions, ::std::map<::std::string, ::std::string>& _return, const ::std::vector<::std::string>& p_keys);

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  virtual folly::Future<::std::map<::std::string, ::std::string>> future_getSelectedExportedValues(const ::std::vector<::std::string>& p_keys);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  virtual folly::SemiFuture<::std::map<::std::string, ::std::string>> semifuture_getSelectedExportedValues(const ::std::vector<::std::string>& p_keys);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  virtual folly::Future<::std::map<::std::string, ::std::string>> future_getSelectedExportedValues(apache::thrift::RpcOptions& rpcOptions, const ::std::vector<::std::string>& p_keys);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  virtual folly::SemiFuture<::std::map<::std::string, ::std::string>> semifuture_getSelectedExportedValues(apache::thrift::RpcOptions& rpcOptions, const ::std::vector<::std::string>& p_keys);

#if FOLLY_HAS_COROUTINES
#if __clang__
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  template <int = 0>
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getSelectedExportedValues(const ::std::vector<::std::string>& p_keys) {
    return co_getSelectedExportedValues<false>(nullptr, p_keys);
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  template <int = 0>
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getSelectedExportedValues(apache::thrift::RpcOptions& rpcOptions, const ::std::vector<::std::string>& p_keys) {
    return co_getSelectedExportedValues<true>(&rpcOptions, p_keys);
  }
#else
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getSelectedExportedValues(const ::std::vector<::std::string>& p_keys) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getSelectedExportedValues(p_keys));
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getSelectedExportedValues(apache::thrift::RpcOptions& rpcOptions, const ::std::vector<::std::string>& p_keys) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getSelectedExportedValues(rpcOptions, p_keys));
  }
#endif
 private:
  template <bool hasRpcOptions>
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getSelectedExportedValues(apache::thrift::RpcOptions* rpcOptions, const ::std::vector<::std::string>& p_keys) {
    const folly::CancellationToken& cancelToken =
        co_await folly::coro::co_current_cancellation_token;
    const bool cancellable = cancelToken.canBeCancelled();
    apache::thrift::ClientReceiveState returnState;
    apache::thrift::ClientCoroCallback<false> callback(&returnState, co_await folly::coro::co_current_executor);
    auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
    auto [ctx, header] = getSelectedExportedValuesCtx(rpcOptions);
    using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
    auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
    static apache::thrift::RpcOptions* defaultRpcOptions = new apache::thrift::RpcOptions();
    auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
    if (ctx != nullptr) {
      auto argsAsRefs = std::tie(p_keys);
      ctx->processClientInterceptorsOnRequest(apache::thrift::ClientInterceptorOnRequestArguments(argsAsRefs)).throwUnlessValue();
    }
    if constexpr (hasRpcOptions) {
      fbthrift_serialize_and_send_getSelectedExportedValues(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_keys);
    } else {
      fbthrift_serialize_and_send_getSelectedExportedValues(*defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_keys);
    }
    if (cancellable) {
      folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
      co_await callback.co_waitUntilDone();
    } else {
      co_await callback.co_waitUntilDone();
    }
    if (ctx != nullptr) {
      ctx->processClientInterceptorsOnResponse().throwUnlessValue();
    }
    if (returnState.isException()) {
      co_yield folly::coro::co_error(std::move(returnState.exception()));
    }
    returnState.resetProtocolId(protocolId);
    returnState.resetCtx(std::move(ctx));
    SCOPE_EXIT {
      if (hasRpcOptions && returnState.header()) {
        auto* rheader = returnState.header();
        if (!rheader->getHeaders().empty()) {
          rpcOptions->setReadHeaders(rheader->releaseHeaders());
        }
        rpcOptions->setRoutingData(rheader->releaseRoutingData());
      }
    };
    ::std::map<::std::string, ::std::string> _return;
    if (auto ew = recv_wrapped_getSelectedExportedValues(_return, returnState)) {
      co_yield folly::coro::co_error(std::move(ew));
    }
    co_return _return;
  }
 public:
#endif // FOLLY_HAS_COROUTINES

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  virtual void getSelectedExportedValues(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback, const ::std::vector<::std::string>& p_keys);


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  static folly::exception_wrapper recv_wrapped_getSelectedExportedValues(::std::map<::std::string, ::std::string>& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  static void recv_getSelectedExportedValues(::std::map<::std::string, ::std::string>& _return, ::apache::thrift::ClientReceiveState& state);
  // Mock friendly virtual instance method
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  virtual void recv_instance_getSelectedExportedValues(::std::map<::std::string, ::std::string>& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getSelectedExportedValues"} */
  virtual folly::exception_wrapper recv_instance_wrapped_getSelectedExportedValues(::std::map<::std::string, ::std::string>& _return, ::apache::thrift::ClientReceiveState& state);
 private:
  apache::thrift::SerializedRequest fbthrift_serialize_getSelectedExportedValues(const RpcOptions& rpcOptions, apache::thrift::transport::THeader& header, apache::thrift::ContextStack* contextStack, const ::std::vector<::std::string>& p_keys);
  template <typename RpcOptions>
  void fbthrift_send_getSelectedExportedValues(apache::thrift::SerializedRequest&& request, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::RequestClientCallback::Ptr callback);
  std::pair<::apache::thrift::ContextStack::UniquePtr, std::shared_ptr<::apache::thrift::transport::THeader>> getSelectedExportedValuesCtx(apache::thrift::RpcOptions* rpcOptions);
  template <typename CallbackType>
  folly::SemiFuture<::std::map<::std::string, ::std::string>> fbthrift_semifuture_getSelectedExportedValues(apache::thrift::RpcOptions& rpcOptions, const ::std::vector<::std::string>& p_keys);
 public:
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  virtual void getRegexExportedValues(std::unique_ptr<apache::thrift::RequestCallback> callback, const ::std::string& p_regex);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  virtual void getRegexExportedValues(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback, const ::std::string& p_regex);
 protected:
  void fbthrift_serialize_and_send_getRegexExportedValues(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, const ::std::string& p_regex, bool stealRpcOptions = false);
 public:

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  virtual void sync_getRegexExportedValues(::std::map<::std::string, ::std::string>& _return, const ::std::string& p_regex);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  virtual void sync_getRegexExportedValues(apache::thrift::RpcOptions& rpcOptions, ::std::map<::std::string, ::std::string>& _return, const ::std::string& p_regex);

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  virtual folly::Future<::std::map<::std::string, ::std::string>> future_getRegexExportedValues(const ::std::string& p_regex);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  virtual folly::SemiFuture<::std::map<::std::string, ::std::string>> semifuture_getRegexExportedValues(const ::std::string& p_regex);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  virtual folly::Future<::std::map<::std::string, ::std::string>> future_getRegexExportedValues(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_regex);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  virtual folly::SemiFuture<::std::map<::std::string, ::std::string>> semifuture_getRegexExportedValues(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_regex);

#if FOLLY_HAS_COROUTINES
#if __clang__
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  template <int = 0>
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getRegexExportedValues(const ::std::string& p_regex) {
    return co_getRegexExportedValues<false>(nullptr, p_regex);
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  template <int = 0>
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getRegexExportedValues(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_regex) {
    return co_getRegexExportedValues<true>(&rpcOptions, p_regex);
  }
#else
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getRegexExportedValues(const ::std::string& p_regex) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getRegexExportedValues(p_regex));
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getRegexExportedValues(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_regex) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getRegexExportedValues(rpcOptions, p_regex));
  }
#endif
 private:
  template <bool hasRpcOptions>
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getRegexExportedValues(apache::thrift::RpcOptions* rpcOptions, const ::std::string& p_regex) {
    const folly::CancellationToken& cancelToken =
        co_await folly::coro::co_current_cancellation_token;
    const bool cancellable = cancelToken.canBeCancelled();
    apache::thrift::ClientReceiveState returnState;
    apache::thrift::ClientCoroCallback<false> callback(&returnState, co_await folly::coro::co_current_executor);
    auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
    auto [ctx, header] = getRegexExportedValuesCtx(rpcOptions);
    using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
    auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
    static apache::thrift::RpcOptions* defaultRpcOptions = new apache::thrift::RpcOptions();
    auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
    if (ctx != nullptr) {
      auto argsAsRefs = std::tie(p_regex);
      ctx->processClientInterceptorsOnRequest(apache::thrift::ClientInterceptorOnRequestArguments(argsAsRefs)).throwUnlessValue();
    }
    if constexpr (hasRpcOptions) {
      fbthrift_serialize_and_send_getRegexExportedValues(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_regex);
    } else {
      fbthrift_serialize_and_send_getRegexExportedValues(*defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_regex);
    }
    if (cancellable) {
      folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
      co_await callback.co_waitUntilDone();
    } else {
      co_await callback.co_waitUntilDone();
    }
    if (ctx != nullptr) {
      ctx->processClientInterceptorsOnResponse().throwUnlessValue();
    }
    if (returnState.isException()) {
      co_yield folly::coro::co_error(std::move(returnState.exception()));
    }
    returnState.resetProtocolId(protocolId);
    returnState.resetCtx(std::move(ctx));
    SCOPE_EXIT {
      if (hasRpcOptions && returnState.header()) {
        auto* rheader = returnState.header();
        if (!rheader->getHeaders().empty()) {
          rpcOptions->setReadHeaders(rheader->releaseHeaders());
        }
        rpcOptions->setRoutingData(rheader->releaseRoutingData());
      }
    };
    ::std::map<::std::string, ::std::string> _return;
    if (auto ew = recv_wrapped_getRegexExportedValues(_return, returnState)) {
      co_yield folly::coro::co_error(std::move(ew));
    }
    co_return _return;
  }
 public:
#endif // FOLLY_HAS_COROUTINES

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  virtual void getRegexExportedValues(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback, const ::std::string& p_regex);


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  static folly::exception_wrapper recv_wrapped_getRegexExportedValues(::std::map<::std::string, ::std::string>& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  static void recv_getRegexExportedValues(::std::map<::std::string, ::std::string>& _return, ::apache::thrift::ClientReceiveState& state);
  // Mock friendly virtual instance method
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  virtual void recv_instance_getRegexExportedValues(::std::map<::std::string, ::std::string>& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getRegexExportedValues"} */
  virtual folly::exception_wrapper recv_instance_wrapped_getRegexExportedValues(::std::map<::std::string, ::std::string>& _return, ::apache::thrift::ClientReceiveState& state);
 private:
  apache::thrift::SerializedRequest fbthrift_serialize_getRegexExportedValues(const RpcOptions& rpcOptions, apache::thrift::transport::THeader& header, apache::thrift::ContextStack* contextStack, const ::std::string& p_regex);
  template <typename RpcOptions>
  void fbthrift_send_getRegexExportedValues(apache::thrift::SerializedRequest&& request, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::RequestClientCallback::Ptr callback);
  std::pair<::apache::thrift::ContextStack::UniquePtr, std::shared_ptr<::apache::thrift::transport::THeader>> getRegexExportedValuesCtx(apache::thrift::RpcOptions* rpcOptions);
  template <typename CallbackType>
  folly::SemiFuture<::std::map<::std::string, ::std::string>> fbthrift_semifuture_getRegexExportedValues(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_regex);
 public:
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  virtual void getExportedValue(std::unique_ptr<apache::thrift::RequestCallback> callback, const ::std::string& p_key);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  virtual void getExportedValue(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback, const ::std::string& p_key);
 protected:
  void fbthrift_serialize_and_send_getExportedValue(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, const ::std::string& p_key, bool stealRpcOptions = false);
 public:

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  virtual void sync_getExportedValue(::std::string& _return, const ::std::string& p_key);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  virtual void sync_getExportedValue(apache::thrift::RpcOptions& rpcOptions, ::std::string& _return, const ::std::string& p_key);

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  virtual folly::Future<::std::string> future_getExportedValue(const ::std::string& p_key);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  virtual folly::SemiFuture<::std::string> semifuture_getExportedValue(const ::std::string& p_key);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  virtual folly::Future<::std::string> future_getExportedValue(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  virtual folly::SemiFuture<::std::string> semifuture_getExportedValue(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key);

#if FOLLY_HAS_COROUTINES
#if __clang__
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  template <int = 0>
  folly::coro::Task<::std::string> co_getExportedValue(const ::std::string& p_key) {
    return co_getExportedValue<false>(nullptr, p_key);
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  template <int = 0>
  folly::coro::Task<::std::string> co_getExportedValue(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key) {
    return co_getExportedValue<true>(&rpcOptions, p_key);
  }
#else
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  folly::coro::Task<::std::string> co_getExportedValue(const ::std::string& p_key) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getExportedValue(p_key));
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  folly::coro::Task<::std::string> co_getExportedValue(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getExportedValue(rpcOptions, p_key));
  }
#endif
 private:
  template <bool hasRpcOptions>
  folly::coro::Task<::std::string> co_getExportedValue(apache::thrift::RpcOptions* rpcOptions, const ::std::string& p_key) {
    const folly::CancellationToken& cancelToken =
        co_await folly::coro::co_current_cancellation_token;
    const bool cancellable = cancelToken.canBeCancelled();
    apache::thrift::ClientReceiveState returnState;
    apache::thrift::ClientCoroCallback<false> callback(&returnState, co_await folly::coro::co_current_executor);
    auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
    auto [ctx, header] = getExportedValueCtx(rpcOptions);
    using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
    auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
    static apache::thrift::RpcOptions* defaultRpcOptions = new apache::thrift::RpcOptions();
    auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
    if (ctx != nullptr) {
      auto argsAsRefs = std::tie(p_key);
      ctx->processClientInterceptorsOnRequest(apache::thrift::ClientInterceptorOnRequestArguments(argsAsRefs)).throwUnlessValue();
    }
    if constexpr (hasRpcOptions) {
      fbthrift_serialize_and_send_getExportedValue(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_key);
    } else {
      fbthrift_serialize_and_send_getExportedValue(*defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_key);
    }
    if (cancellable) {
      folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
      co_await callback.co_waitUntilDone();
    } else {
      co_await callback.co_waitUntilDone();
    }
    if (ctx != nullptr) {
      ctx->processClientInterceptorsOnResponse().throwUnlessValue();
    }
    if (returnState.isException()) {
      co_yield folly::coro::co_error(std::move(returnState.exception()));
    }
    returnState.resetProtocolId(protocolId);
    returnState.resetCtx(std::move(ctx));
    SCOPE_EXIT {
      if (hasRpcOptions && returnState.header()) {
        auto* rheader = returnState.header();
        if (!rheader->getHeaders().empty()) {
          rpcOptions->setReadHeaders(rheader->releaseHeaders());
        }
        rpcOptions->setRoutingData(rheader->releaseRoutingData());
      }
    };
    ::std::string _return;
    if (auto ew = recv_wrapped_getExportedValue(_return, returnState)) {
      co_yield folly::coro::co_error(std::move(ew));
    }
    co_return _return;
  }
 public:
#endif // FOLLY_HAS_COROUTINES

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  virtual void getExportedValue(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback, const ::std::string& p_key);


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  static folly::exception_wrapper recv_wrapped_getExportedValue(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  static void recv_getExportedValue(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
  // Mock friendly virtual instance method
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  virtual void recv_instance_getExportedValue(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getExportedValue"} */
  virtual folly::exception_wrapper recv_instance_wrapped_getExportedValue(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
 private:
  apache::thrift::SerializedRequest fbthrift_serialize_getExportedValue(const RpcOptions& rpcOptions, apache::thrift::transport::THeader& header, apache::thrift::ContextStack* contextStack, const ::std::string& p_key);
  template <typename RpcOptions>
  void fbthrift_send_getExportedValue(apache::thrift::SerializedRequest&& request, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::RequestClientCallback::Ptr callback);
  std::pair<::apache::thrift::ContextStack::UniquePtr, std::shared_ptr<::apache::thrift::transport::THeader>> getExportedValueCtx(apache::thrift::RpcOptions* rpcOptions);
  template <typename CallbackType>
  folly::SemiFuture<::std::string> fbthrift_semifuture_getExportedValue(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key);
 public:
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  virtual void setOption(std::unique_ptr<apache::thrift::RequestCallback> callback, const ::std::string& p_key, const ::std::string& p_value);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  virtual void setOption(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback, const ::std::string& p_key, const ::std::string& p_value);
 protected:
  void fbthrift_serialize_and_send_setOption(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, const ::std::string& p_key, const ::std::string& p_value, bool stealRpcOptions = false);
 public:

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  virtual void sync_setOption(const ::std::string& p_key, const ::std::string& p_value);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  virtual void sync_setOption(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key, const ::std::string& p_value);

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  virtual folly::Future<folly::Unit> future_setOption(const ::std::string& p_key, const ::std::string& p_value);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  virtual folly::SemiFuture<folly::Unit> semifuture_setOption(const ::std::string& p_key, const ::std::string& p_value);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  virtual folly::Future<folly::Unit> future_setOption(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key, const ::std::string& p_value);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  virtual folly::SemiFuture<folly::Unit> semifuture_setOption(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key, const ::std::string& p_value);

#if FOLLY_HAS_COROUTINES
#if __clang__
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  template <int = 0>
  folly::coro::Task<void> co_setOption(const ::std::string& p_key, const ::std::string& p_value) {
    return co_setOption<false>(nullptr, p_key, p_value);
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  template <int = 0>
  folly::coro::Task<void> co_setOption(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key, const ::std::string& p_value) {
    return co_setOption<true>(&rpcOptions, p_key, p_value);
  }
#else
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  folly::coro::Task<void> co_setOption(const ::std::string& p_key, const ::std::string& p_value) {
    co_await folly::coro::detachOnCancel(semifuture_setOption(p_key, p_value));
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  folly::coro::Task<void> co_setOption(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key, const ::std::string& p_value) {
    co_await folly::coro::detachOnCancel(semifuture_setOption(rpcOptions, p_key, p_value));
  }
#endif
 private:
  template <bool hasRpcOptions>
  folly::coro::Task<void> co_setOption(apache::thrift::RpcOptions* rpcOptions, const ::std::string& p_key, const ::std::string& p_value) {
    const folly::CancellationToken& cancelToken =
        co_await folly::coro::co_current_cancellation_token;
    const bool cancellable = cancelToken.canBeCancelled();
    apache::thrift::ClientReceiveState returnState;
    apache::thrift::ClientCoroCallback<false> callback(&returnState, co_await folly::coro::co_current_executor);
    auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
    auto [ctx, header] = setOptionCtx(rpcOptions);
    using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
    auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
    static apache::thrift::RpcOptions* defaultRpcOptions = new apache::thrift::RpcOptions();
    auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
    if (ctx != nullptr) {
      auto argsAsRefs = std::tie(p_key, p_value);
      ctx->processClientInterceptorsOnRequest(apache::thrift::ClientInterceptorOnRequestArguments(argsAsRefs)).throwUnlessValue();
    }
    if constexpr (hasRpcOptions) {
      fbthrift_serialize_and_send_setOption(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_key, p_value);
    } else {
      fbthrift_serialize_and_send_setOption(*defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_key, p_value);
    }
    if (cancellable) {
      folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
      co_await callback.co_waitUntilDone();
    } else {
      co_await callback.co_waitUntilDone();
    }
    if (ctx != nullptr) {
      ctx->processClientInterceptorsOnResponse().throwUnlessValue();
    }
    if (returnState.isException()) {
      co_yield folly::coro::co_error(std::move(returnState.exception()));
    }
    returnState.resetProtocolId(protocolId);
    returnState.resetCtx(std::move(ctx));
    SCOPE_EXIT {
      if (hasRpcOptions && returnState.header()) {
        auto* rheader = returnState.header();
        if (!rheader->getHeaders().empty()) {
          rpcOptions->setReadHeaders(rheader->releaseHeaders());
        }
        rpcOptions->setRoutingData(rheader->releaseRoutingData());
      }
    };
    if (auto ew = recv_wrapped_setOption(returnState)) {
      co_yield folly::coro::co_error(std::move(ew));
    }
  }
 public:
#endif // FOLLY_HAS_COROUTINES

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  virtual void setOption(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback, const ::std::string& p_key, const ::std::string& p_value);


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  static folly::exception_wrapper recv_wrapped_setOption(::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  static void recv_setOption(::apache::thrift::ClientReceiveState& state);
  // Mock friendly virtual instance method
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  virtual void recv_instance_setOption(::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "setOption"} */
  virtual folly::exception_wrapper recv_instance_wrapped_setOption(::apache::thrift::ClientReceiveState& state);
 private:
  apache::thrift::SerializedRequest fbthrift_serialize_setOption(const RpcOptions& rpcOptions, apache::thrift::transport::THeader& header, apache::thrift::ContextStack* contextStack, const ::std::string& p_key, const ::std::string& p_value);
  template <typename RpcOptions>
  void fbthrift_send_setOption(apache::thrift::SerializedRequest&& request, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::RequestClientCallback::Ptr callback);
  std::pair<::apache::thrift::ContextStack::UniquePtr, std::shared_ptr<::apache::thrift::transport::THeader>> setOptionCtx(apache::thrift::RpcOptions* rpcOptions);
  template <typename CallbackType>
  folly::SemiFuture<folly::Unit> fbthrift_semifuture_setOption(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key, const ::std::string& p_value);
 public:
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  virtual void getOption(std::unique_ptr<apache::thrift::RequestCallback> callback, const ::std::string& p_key);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  virtual void getOption(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback, const ::std::string& p_key);
 protected:
  void fbthrift_serialize_and_send_getOption(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, const ::std::string& p_key, bool stealRpcOptions = false);
 public:

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  virtual void sync_getOption(::std::string& _return, const ::std::string& p_key);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  virtual void sync_getOption(apache::thrift::RpcOptions& rpcOptions, ::std::string& _return, const ::std::string& p_key);

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  virtual folly::Future<::std::string> future_getOption(const ::std::string& p_key);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  virtual folly::SemiFuture<::std::string> semifuture_getOption(const ::std::string& p_key);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  virtual folly::Future<::std::string> future_getOption(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  virtual folly::SemiFuture<::std::string> semifuture_getOption(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key);

#if FOLLY_HAS_COROUTINES
#if __clang__
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  template <int = 0>
  folly::coro::Task<::std::string> co_getOption(const ::std::string& p_key) {
    return co_getOption<false>(nullptr, p_key);
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  template <int = 0>
  folly::coro::Task<::std::string> co_getOption(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key) {
    return co_getOption<true>(&rpcOptions, p_key);
  }
#else
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  folly::coro::Task<::std::string> co_getOption(const ::std::string& p_key) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getOption(p_key));
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  folly::coro::Task<::std::string> co_getOption(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getOption(rpcOptions, p_key));
  }
#endif
 private:
  template <bool hasRpcOptions>
  folly::coro::Task<::std::string> co_getOption(apache::thrift::RpcOptions* rpcOptions, const ::std::string& p_key) {
    const folly::CancellationToken& cancelToken =
        co_await folly::coro::co_current_cancellation_token;
    const bool cancellable = cancelToken.canBeCancelled();
    apache::thrift::ClientReceiveState returnState;
    apache::thrift::ClientCoroCallback<false> callback(&returnState, co_await folly::coro::co_current_executor);
    auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
    auto [ctx, header] = getOptionCtx(rpcOptions);
    using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
    auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
    static apache::thrift::RpcOptions* defaultRpcOptions = new apache::thrift::RpcOptions();
    auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
    if (ctx != nullptr) {
      auto argsAsRefs = std::tie(p_key);
      ctx->processClientInterceptorsOnRequest(apache::thrift::ClientInterceptorOnRequestArguments(argsAsRefs)).throwUnlessValue();
    }
    if constexpr (hasRpcOptions) {
      fbthrift_serialize_and_send_getOption(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_key);
    } else {
      fbthrift_serialize_and_send_getOption(*defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_key);
    }
    if (cancellable) {
      folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
      co_await callback.co_waitUntilDone();
    } else {
      co_await callback.co_waitUntilDone();
    }
    if (ctx != nullptr) {
      ctx->processClientInterceptorsOnResponse().throwUnlessValue();
    }
    if (returnState.isException()) {
      co_yield folly::coro::co_error(std::move(returnState.exception()));
    }
    returnState.resetProtocolId(protocolId);
    returnState.resetCtx(std::move(ctx));
    SCOPE_EXIT {
      if (hasRpcOptions && returnState.header()) {
        auto* rheader = returnState.header();
        if (!rheader->getHeaders().empty()) {
          rpcOptions->setReadHeaders(rheader->releaseHeaders());
        }
        rpcOptions->setRoutingData(rheader->releaseRoutingData());
      }
    };
    ::std::string _return;
    if (auto ew = recv_wrapped_getOption(_return, returnState)) {
      co_yield folly::coro::co_error(std::move(ew));
    }
    co_return _return;
  }
 public:
#endif // FOLLY_HAS_COROUTINES

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  virtual void getOption(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback, const ::std::string& p_key);


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  static folly::exception_wrapper recv_wrapped_getOption(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  static void recv_getOption(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
  // Mock friendly virtual instance method
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  virtual void recv_instance_getOption(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOption"} */
  virtual folly::exception_wrapper recv_instance_wrapped_getOption(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
 private:
  apache::thrift::SerializedRequest fbthrift_serialize_getOption(const RpcOptions& rpcOptions, apache::thrift::transport::THeader& header, apache::thrift::ContextStack* contextStack, const ::std::string& p_key);
  template <typename RpcOptions>
  void fbthrift_send_getOption(apache::thrift::SerializedRequest&& request, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::RequestClientCallback::Ptr callback);
  std::pair<::apache::thrift::ContextStack::UniquePtr, std::shared_ptr<::apache::thrift::transport::THeader>> getOptionCtx(apache::thrift::RpcOptions* rpcOptions);
  template <typename CallbackType>
  folly::SemiFuture<::std::string> fbthrift_semifuture_getOption(apache::thrift::RpcOptions& rpcOptions, const ::std::string& p_key);
 public:
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  virtual void getOptions(std::unique_ptr<apache::thrift::RequestCallback> callback);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  virtual void getOptions(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback);
 protected:
  void fbthrift_serialize_and_send_getOptions(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, bool stealRpcOptions = false);
 public:

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  virtual void sync_getOptions(::std::map<::std::string, ::std::string>& _return);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  virtual void sync_getOptions(apache::thrift::RpcOptions& rpcOptions, ::std::map<::std::string, ::std::string>& _return);

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  virtual folly::Future<::std::map<::std::string, ::std::string>> future_getOptions();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  virtual folly::SemiFuture<::std::map<::std::string, ::std::string>> semifuture_getOptions();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  virtual folly::Future<::std::map<::std::string, ::std::string>> future_getOptions(apache::thrift::RpcOptions& rpcOptions);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  virtual folly::SemiFuture<::std::map<::std::string, ::std::string>> semifuture_getOptions(apache::thrift::RpcOptions& rpcOptions);

#if FOLLY_HAS_COROUTINES
#if __clang__
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  template <int = 0>
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getOptions() {
    return co_getOptions<false>(nullptr);
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  template <int = 0>
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getOptions(apache::thrift::RpcOptions& rpcOptions) {
    return co_getOptions<true>(&rpcOptions);
  }
#else
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getOptions() {
    co_return co_await folly::coro::detachOnCancel(semifuture_getOptions());
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getOptions(apache::thrift::RpcOptions& rpcOptions) {
    co_return co_await folly::coro::detachOnCancel(semifuture_getOptions(rpcOptions));
  }
#endif
 private:
  template <bool hasRpcOptions>
  folly::coro::Task<::std::map<::std::string, ::std::string>> co_getOptions(apache::thrift::RpcOptions* rpcOptions) {
    const folly::CancellationToken& cancelToken =
        co_await folly::coro::co_current_cancellation_token;
    const bool cancellable = cancelToken.canBeCancelled();
    apache::thrift::ClientReceiveState returnState;
    apache::thrift::ClientCoroCallback<false> callback(&returnState, co_await folly::coro::co_current_executor);
    auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
    auto [ctx, header] = getOptionsCtx(rpcOptions);
    using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
    auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
    static apache::thrift::RpcOptions* defaultRpcOptions = new apache::thrift::RpcOptions();
    auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
    if (ctx != nullptr) {
      auto argsAsRefs = std::tie();
      ctx->processClientInterceptorsOnRequest(apache::thrift::ClientInterceptorOnRequestArguments(argsAsRefs)).throwUnlessValue();
    }
    if constexpr (hasRpcOptions) {
      fbthrift_serialize_and_send_getOptions(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback));
    } else {
      fbthrift_serialize_and_send_getOptions(*defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback));
    }
    if (cancellable) {
      folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
      co_await callback.co_waitUntilDone();
    } else {
      co_await callback.co_waitUntilDone();
    }
    if (ctx != nullptr) {
      ctx->processClientInterceptorsOnResponse().throwUnlessValue();
    }
    if (returnState.isException()) {
      co_yield folly::coro::co_error(std::move(returnState.exception()));
    }
    returnState.resetProtocolId(protocolId);
    returnState.resetCtx(std::move(ctx));
    SCOPE_EXIT {
      if (hasRpcOptions && returnState.header()) {
        auto* rheader = returnState.header();
        if (!rheader->getHeaders().empty()) {
          rpcOptions->setReadHeaders(rheader->releaseHeaders());
        }
        rpcOptions->setRoutingData(rheader->releaseRoutingData());
      }
    };
    ::std::map<::std::string, ::std::string> _return;
    if (auto ew = recv_wrapped_getOptions(_return, returnState)) {
      co_yield folly::coro::co_error(std::move(ew));
    }
    co_return _return;
  }
 public:
#endif // FOLLY_HAS_COROUTINES

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  virtual void getOptions(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback);


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  static folly::exception_wrapper recv_wrapped_getOptions(::std::map<::std::string, ::std::string>& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  static void recv_getOptions(::std::map<::std::string, ::std::string>& _return, ::apache::thrift::ClientReceiveState& state);
  // Mock friendly virtual instance method
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  virtual void recv_instance_getOptions(::std::map<::std::string, ::std::string>& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "getOptions"} */
  virtual folly::exception_wrapper recv_instance_wrapped_getOptions(::std::map<::std::string, ::std::string>& _return, ::apache::thrift::ClientReceiveState& state);
 private:
  apache::thrift::SerializedRequest fbthrift_serialize_getOptions(const RpcOptions& rpcOptions, apache::thrift::transport::THeader& header, apache::thrift::ContextStack* contextStack);
  template <typename RpcOptions>
  void fbthrift_send_getOptions(apache::thrift::SerializedRequest&& request, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::RequestClientCallback::Ptr callback);
  std::pair<::apache::thrift::ContextStack::UniquePtr, std::shared_ptr<::apache::thrift::transport::THeader>> getOptionsCtx(apache::thrift::RpcOptions* rpcOptions);
  template <typename CallbackType>
  folly::SemiFuture<::std::map<::std::string, ::std::string>> fbthrift_semifuture_getOptions(apache::thrift::RpcOptions& rpcOptions);
 public:
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  virtual void aliveSince(std::unique_ptr<apache::thrift::RequestCallback> callback);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  virtual void aliveSince(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback);
 protected:
  void fbthrift_serialize_and_send_aliveSince(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, bool stealRpcOptions = false);
 public:

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  virtual ::std::int64_t sync_aliveSince();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  virtual ::std::int64_t sync_aliveSince(apache::thrift::RpcOptions& rpcOptions);

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  virtual folly::Future<::std::int64_t> future_aliveSince();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  virtual folly::SemiFuture<::std::int64_t> semifuture_aliveSince();
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  virtual folly::Future<::std::int64_t> future_aliveSince(apache::thrift::RpcOptions& rpcOptions);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  virtual folly::SemiFuture<::std::int64_t> semifuture_aliveSince(apache::thrift::RpcOptions& rpcOptions);

#if FOLLY_HAS_COROUTINES
#if __clang__
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  template <int = 0>
  folly::coro::Task<::std::int64_t> co_aliveSince() {
    return co_aliveSince<false>(nullptr);
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  template <int = 0>
  folly::coro::Task<::std::int64_t> co_aliveSince(apache::thrift::RpcOptions& rpcOptions) {
    return co_aliveSince<true>(&rpcOptions);
  }
#else
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  folly::coro::Task<::std::int64_t> co_aliveSince() {
    co_return co_await folly::coro::detachOnCancel(semifuture_aliveSince());
  }
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  folly::coro::Task<::std::int64_t> co_aliveSince(apache::thrift::RpcOptions& rpcOptions) {
    co_return co_await folly::coro::detachOnCancel(semifuture_aliveSince(rpcOptions));
  }
#endif
 private:
  template <bool hasRpcOptions>
  folly::coro::Task<::std::int64_t> co_aliveSince(apache::thrift::RpcOptions* rpcOptions) {
    const folly::CancellationToken& cancelToken =
        co_await folly::coro::co_current_cancellation_token;
    const bool cancellable = cancelToken.canBeCancelled();
    apache::thrift::ClientReceiveState returnState;
    apache::thrift::ClientCoroCallback<false> callback(&returnState, co_await folly::coro::co_current_executor);
    auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
    auto [ctx, header] = aliveSinceCtx(rpcOptions);
    using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
    auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
    static apache::thrift::RpcOptions* defaultRpcOptions = new apache::thrift::RpcOptions();
    auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
    if (ctx != nullptr) {
      auto argsAsRefs = std::tie();
      ctx->processClientInterceptorsOnRequest(apache::thrift::ClientInterceptorOnRequestArguments(argsAsRefs)).throwUnlessValue();
    }
    if constexpr (hasRpcOptions) {
      fbthrift_serialize_and_send_aliveSince(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback));
    } else {
      fbthrift_serialize_and_send_aliveSince(*defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback));
    }
    if (cancellable) {
      folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
      co_await callback.co_waitUntilDone();
    } else {
      co_await callback.co_waitUntilDone();
    }
    if (ctx != nullptr) {
      ctx->processClientInterceptorsOnResponse().throwUnlessValue();
    }
    if (returnState.isException()) {
      co_yield folly::coro::co_error(std::move(returnState.exception()));
    }
    returnState.resetProtocolId(protocolId);
    returnState.resetCtx(std::move(ctx));
    SCOPE_EXIT {
      if (hasRpcOptions && returnState.header()) {
        auto* rheader = returnState.header();
        if (!rheader->getHeaders().empty()) {
          rpcOptions->setReadHeaders(rheader->releaseHeaders());
        }
        rpcOptions->setRoutingData(rheader->releaseRoutingData());
      }
    };
    ::std::int64_t _return;
    if (auto ew = recv_wrapped_aliveSince(_return, returnState)) {
      co_yield folly::coro::co_error(std::move(ew));
    }
    co_return _return;
  }
 public:
#endif // FOLLY_HAS_COROUTINES

  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  virtual void aliveSince(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback);


  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  static folly::exception_wrapper recv_wrapped_aliveSince(::std::int64_t& _return, ::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  static ::std::int64_t recv_aliveSince(::apache::thrift::ClientReceiveState& state);
  // Mock friendly virtual instance method
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  virtual ::std::int64_t recv_instance_aliveSince(::apache::thrift::ClientReceiveState& state);
  /** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fb303/fb303/work/fb303-2024.09.23.00/fb303/thrift/fb303_core.thrift", "service": "BaseService", "function": "aliveSince"} */
  virtual folly::exception_wrapper recv_instance_wrapped_aliveSince(::std::int64_t& _return, ::apache::thrift::ClientReceiveState& state);
 private:
  apache::thrift::SerializedRequest fbthrift_serialize_aliveSince(const RpcOptions& rpcOptions, apache::thrift::transport::THeader& header, apache::thrift::ContextStack* contextStack);
  template <typename RpcOptions>
  void fbthrift_send_aliveSince(apache::thrift::SerializedRequest&& request, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::RequestClientCallback::Ptr callback);
  std::pair<::apache::thrift::ContextStack::UniquePtr, std::shared_ptr<::apache::thrift::transport::THeader>> aliveSinceCtx(apache::thrift::RpcOptions* rpcOptions);
  template <typename CallbackType>
  folly::SemiFuture<::std::int64_t> fbthrift_semifuture_aliveSince(apache::thrift::RpcOptions& rpcOptions);
 public:
};

} // namespace apache::thrift

namespace facebook::fb303::cpp2 {
using BaseServiceAsyncClient [[deprecated("Use apache::thrift::Client<BaseService> instead")]] = ::apache::thrift::Client<BaseService>;
} // namespace facebook::fb303::cpp2
