// Generated by the gRPC C++ plugin.
// If you make any local change, they will be lost.
// source: ads.proto
#ifndef GRPC_ads_2eproto__INCLUDED
#define GRPC_ads_2eproto__INCLUDED

#include "ads.pb.h"

#include <functional>
#include <grpcpp/impl/codegen/async_generic_service.h>
#include <grpcpp/impl/codegen/async_stream.h>
#include <grpcpp/impl/codegen/async_unary_call.h>
#include <grpcpp/impl/codegen/client_callback.h>
#include <grpcpp/impl/codegen/method_handler_impl.h>
#include <grpcpp/impl/codegen/proto_utils.h>
#include <grpcpp/impl/codegen/rpc_method.h>
#include <grpcpp/impl/codegen/server_callback.h>
#include <grpcpp/impl/codegen/service_type.h>
#include <grpcpp/impl/codegen/status.h>
#include <grpcpp/impl/codegen/stub_options.h>
#include <grpcpp/impl/codegen/sync_stream.h>

namespace grpc {
class CompletionQueue;
class Channel;
class ServerCompletionQueue;
class ServerContext;
}  // namespace grpc

namespace envoy {
namespace service {
namespace discovery {
namespace v2 {

// [#not-implemented-hide:] Discovery services for endpoints, clusters, routes,
// and listeners are retained in the package `envoy.api.v2` for backwards
// compatibility with existing management servers. New development in discovery
// services should proceed in the package `envoy.service.discovery.v2`.
//
// See https://github.com/lyft/envoy-api#apis for a description of the role of
// ADS and how it is intended to be used by a management server. ADS requests
// have the same structure as their singleton xDS counterparts, but can
// multiplex many resource types on a single stream. The type_url in the
// DiscoveryRequest/DiscoveryResponse provides sufficient information to recover
// the multiplexed singleton APIs at the Envoy instance and management server.
class AggregatedDiscoveryService final {
 public:
  static constexpr char const* service_full_name() {
    return "envoy.service.discovery.v2.AggregatedDiscoveryService";
  }
  class StubInterface {
   public:
    virtual ~StubInterface() {}
    // This is a gRPC-only API.
    std::unique_ptr< ::grpc::ClientReaderWriterInterface< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>> StreamAggregatedResources(::grpc::ClientContext* context) {
      return std::unique_ptr< ::grpc::ClientReaderWriterInterface< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>>(StreamAggregatedResourcesRaw(context));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderWriterInterface< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>> AsyncStreamAggregatedResources(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderWriterInterface< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>>(AsyncStreamAggregatedResourcesRaw(context, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderWriterInterface< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>> PrepareAsyncStreamAggregatedResources(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderWriterInterface< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>>(PrepareAsyncStreamAggregatedResourcesRaw(context, cq));
    }
    std::unique_ptr< ::grpc::ClientReaderWriterInterface< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>> IncrementalAggregatedResources(::grpc::ClientContext* context) {
      return std::unique_ptr< ::grpc::ClientReaderWriterInterface< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>>(IncrementalAggregatedResourcesRaw(context));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderWriterInterface< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>> AsyncIncrementalAggregatedResources(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderWriterInterface< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>>(AsyncIncrementalAggregatedResourcesRaw(context, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderWriterInterface< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>> PrepareAsyncIncrementalAggregatedResources(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderWriterInterface< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>>(PrepareAsyncIncrementalAggregatedResourcesRaw(context, cq));
    }
    class experimental_async_interface {
     public:
      virtual ~experimental_async_interface() {}
      // This is a gRPC-only API.
      virtual void StreamAggregatedResources(::grpc::ClientContext* context, ::grpc::experimental::ClientBidiReactor< ::envoy::api::v2::DiscoveryRequest,::envoy::api::v2::DiscoveryResponse>* reactor) = 0;
      virtual void IncrementalAggregatedResources(::grpc::ClientContext* context, ::grpc::experimental::ClientBidiReactor< ::envoy::api::v2::IncrementalDiscoveryRequest,::envoy::api::v2::IncrementalDiscoveryResponse>* reactor) = 0;
    };
    virtual class experimental_async_interface* experimental_async() { return nullptr; }
  private:
    virtual ::grpc::ClientReaderWriterInterface< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>* StreamAggregatedResourcesRaw(::grpc::ClientContext* context) = 0;
    virtual ::grpc::ClientAsyncReaderWriterInterface< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>* AsyncStreamAggregatedResourcesRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderWriterInterface< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>* PrepareAsyncStreamAggregatedResourcesRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderWriterInterface< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>* IncrementalAggregatedResourcesRaw(::grpc::ClientContext* context) = 0;
    virtual ::grpc::ClientAsyncReaderWriterInterface< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>* AsyncIncrementalAggregatedResourcesRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderWriterInterface< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>* PrepareAsyncIncrementalAggregatedResourcesRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) = 0;
  };
  class Stub final : public StubInterface {
   public:
    Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel);
    std::unique_ptr< ::grpc::ClientReaderWriter< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>> StreamAggregatedResources(::grpc::ClientContext* context) {
      return std::unique_ptr< ::grpc::ClientReaderWriter< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>>(StreamAggregatedResourcesRaw(context));
    }
    std::unique_ptr<  ::grpc::ClientAsyncReaderWriter< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>> AsyncStreamAggregatedResources(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderWriter< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>>(AsyncStreamAggregatedResourcesRaw(context, cq, tag));
    }
    std::unique_ptr<  ::grpc::ClientAsyncReaderWriter< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>> PrepareAsyncStreamAggregatedResources(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderWriter< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>>(PrepareAsyncStreamAggregatedResourcesRaw(context, cq));
    }
    std::unique_ptr< ::grpc::ClientReaderWriter< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>> IncrementalAggregatedResources(::grpc::ClientContext* context) {
      return std::unique_ptr< ::grpc::ClientReaderWriter< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>>(IncrementalAggregatedResourcesRaw(context));
    }
    std::unique_ptr<  ::grpc::ClientAsyncReaderWriter< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>> AsyncIncrementalAggregatedResources(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderWriter< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>>(AsyncIncrementalAggregatedResourcesRaw(context, cq, tag));
    }
    std::unique_ptr<  ::grpc::ClientAsyncReaderWriter< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>> PrepareAsyncIncrementalAggregatedResources(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderWriter< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>>(PrepareAsyncIncrementalAggregatedResourcesRaw(context, cq));
    }
    class experimental_async final :
      public StubInterface::experimental_async_interface {
     public:
      void StreamAggregatedResources(::grpc::ClientContext* context, ::grpc::experimental::ClientBidiReactor< ::envoy::api::v2::DiscoveryRequest,::envoy::api::v2::DiscoveryResponse>* reactor) override;
      void IncrementalAggregatedResources(::grpc::ClientContext* context, ::grpc::experimental::ClientBidiReactor< ::envoy::api::v2::IncrementalDiscoveryRequest,::envoy::api::v2::IncrementalDiscoveryResponse>* reactor) override;
     private:
      friend class Stub;
      explicit experimental_async(Stub* stub): stub_(stub) { }
      Stub* stub() { return stub_; }
      Stub* stub_;
    };
    class experimental_async_interface* experimental_async() override { return &async_stub_; }

   private:
    std::shared_ptr< ::grpc::ChannelInterface> channel_;
    class experimental_async async_stub_{this};
    ::grpc::ClientReaderWriter< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>* StreamAggregatedResourcesRaw(::grpc::ClientContext* context) override;
    ::grpc::ClientAsyncReaderWriter< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>* AsyncStreamAggregatedResourcesRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReaderWriter< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>* PrepareAsyncStreamAggregatedResourcesRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReaderWriter< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>* IncrementalAggregatedResourcesRaw(::grpc::ClientContext* context) override;
    ::grpc::ClientAsyncReaderWriter< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>* AsyncIncrementalAggregatedResourcesRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReaderWriter< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>* PrepareAsyncIncrementalAggregatedResourcesRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) override;
    const ::grpc::internal::RpcMethod rpcmethod_StreamAggregatedResources_;
    const ::grpc::internal::RpcMethod rpcmethod_IncrementalAggregatedResources_;
  };
  static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());

  class Service : public ::grpc::Service {
   public:
    Service();
    virtual ~Service();
    // This is a gRPC-only API.
    virtual ::grpc::Status StreamAggregatedResources(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::envoy::api::v2::DiscoveryResponse, ::envoy::api::v2::DiscoveryRequest>* stream);
    virtual ::grpc::Status IncrementalAggregatedResources(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::envoy::api::v2::IncrementalDiscoveryResponse, ::envoy::api::v2::IncrementalDiscoveryRequest>* stream);
  };
  template <class BaseClass>
  class WithAsyncMethod_StreamAggregatedResources : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithAsyncMethod_StreamAggregatedResources() {
      ::grpc::Service::MarkMethodAsync(0);
    }
    ~WithAsyncMethod_StreamAggregatedResources() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status StreamAggregatedResources(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::envoy::api::v2::DiscoveryResponse, ::envoy::api::v2::DiscoveryRequest>* stream)  override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestStreamAggregatedResources(::grpc::ServerContext* context, ::grpc::ServerAsyncReaderWriter< ::envoy::api::v2::DiscoveryResponse, ::envoy::api::v2::DiscoveryRequest>* stream, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncBidiStreaming(0, context, stream, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_IncrementalAggregatedResources : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithAsyncMethod_IncrementalAggregatedResources() {
      ::grpc::Service::MarkMethodAsync(1);
    }
    ~WithAsyncMethod_IncrementalAggregatedResources() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status IncrementalAggregatedResources(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::envoy::api::v2::IncrementalDiscoveryResponse, ::envoy::api::v2::IncrementalDiscoveryRequest>* stream)  override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestIncrementalAggregatedResources(::grpc::ServerContext* context, ::grpc::ServerAsyncReaderWriter< ::envoy::api::v2::IncrementalDiscoveryResponse, ::envoy::api::v2::IncrementalDiscoveryRequest>* stream, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncBidiStreaming(1, context, stream, new_call_cq, notification_cq, tag);
    }
  };
  typedef WithAsyncMethod_StreamAggregatedResources<WithAsyncMethod_IncrementalAggregatedResources<Service > > AsyncService;
  template <class BaseClass>
  class ExperimentalWithCallbackMethod_StreamAggregatedResources : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithCallbackMethod_StreamAggregatedResources() {
      ::grpc::Service::experimental().MarkMethodCallback(0,
        new ::grpc::internal::CallbackBidiHandler< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>(
          [this] { return this->StreamAggregatedResources(); }));
    }
    ~ExperimentalWithCallbackMethod_StreamAggregatedResources() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status StreamAggregatedResources(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::envoy::api::v2::DiscoveryResponse, ::envoy::api::v2::DiscoveryRequest>* stream)  override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::experimental::ServerBidiReactor< ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>* StreamAggregatedResources() {
      return new ::grpc::internal::UnimplementedBidiReactor<
        ::envoy::api::v2::DiscoveryRequest, ::envoy::api::v2::DiscoveryResponse>;}
  };
  template <class BaseClass>
  class ExperimentalWithCallbackMethod_IncrementalAggregatedResources : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithCallbackMethod_IncrementalAggregatedResources() {
      ::grpc::Service::experimental().MarkMethodCallback(1,
        new ::grpc::internal::CallbackBidiHandler< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>(
          [this] { return this->IncrementalAggregatedResources(); }));
    }
    ~ExperimentalWithCallbackMethod_IncrementalAggregatedResources() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status IncrementalAggregatedResources(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::envoy::api::v2::IncrementalDiscoveryResponse, ::envoy::api::v2::IncrementalDiscoveryRequest>* stream)  override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::experimental::ServerBidiReactor< ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>* IncrementalAggregatedResources() {
      return new ::grpc::internal::UnimplementedBidiReactor<
        ::envoy::api::v2::IncrementalDiscoveryRequest, ::envoy::api::v2::IncrementalDiscoveryResponse>;}
  };
  typedef ExperimentalWithCallbackMethod_StreamAggregatedResources<ExperimentalWithCallbackMethod_IncrementalAggregatedResources<Service > > ExperimentalCallbackService;
  template <class BaseClass>
  class WithGenericMethod_StreamAggregatedResources : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_StreamAggregatedResources() {
      ::grpc::Service::MarkMethodGeneric(0);
    }
    ~WithGenericMethod_StreamAggregatedResources() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status StreamAggregatedResources(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::envoy::api::v2::DiscoveryResponse, ::envoy::api::v2::DiscoveryRequest>* stream)  override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_IncrementalAggregatedResources : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithGenericMethod_IncrementalAggregatedResources() {
      ::grpc::Service::MarkMethodGeneric(1);
    }
    ~WithGenericMethod_IncrementalAggregatedResources() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status IncrementalAggregatedResources(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::envoy::api::v2::IncrementalDiscoveryResponse, ::envoy::api::v2::IncrementalDiscoveryRequest>* stream)  override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithRawMethod_StreamAggregatedResources : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithRawMethod_StreamAggregatedResources() {
      ::grpc::Service::MarkMethodRaw(0);
    }
    ~WithRawMethod_StreamAggregatedResources() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status StreamAggregatedResources(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::envoy::api::v2::DiscoveryResponse, ::envoy::api::v2::DiscoveryRequest>* stream)  override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestStreamAggregatedResources(::grpc::ServerContext* context, ::grpc::ServerAsyncReaderWriter< ::grpc::ByteBuffer, ::grpc::ByteBuffer>* stream, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncBidiStreaming(0, context, stream, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_IncrementalAggregatedResources : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    WithRawMethod_IncrementalAggregatedResources() {
      ::grpc::Service::MarkMethodRaw(1);
    }
    ~WithRawMethod_IncrementalAggregatedResources() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status IncrementalAggregatedResources(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::envoy::api::v2::IncrementalDiscoveryResponse, ::envoy::api::v2::IncrementalDiscoveryRequest>* stream)  override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestIncrementalAggregatedResources(::grpc::ServerContext* context, ::grpc::ServerAsyncReaderWriter< ::grpc::ByteBuffer, ::grpc::ByteBuffer>* stream, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncBidiStreaming(1, context, stream, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class ExperimentalWithRawCallbackMethod_StreamAggregatedResources : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithRawCallbackMethod_StreamAggregatedResources() {
      ::grpc::Service::experimental().MarkMethodRawCallback(0,
        new ::grpc::internal::CallbackBidiHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
          [this] { return this->StreamAggregatedResources(); }));
    }
    ~ExperimentalWithRawCallbackMethod_StreamAggregatedResources() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status StreamAggregatedResources(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::envoy::api::v2::DiscoveryResponse, ::envoy::api::v2::DiscoveryRequest>* stream)  override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::experimental::ServerBidiReactor< ::grpc::ByteBuffer, ::grpc::ByteBuffer>* StreamAggregatedResources() {
      return new ::grpc::internal::UnimplementedBidiReactor<
        ::grpc::ByteBuffer, ::grpc::ByteBuffer>;}
  };
  template <class BaseClass>
  class ExperimentalWithRawCallbackMethod_IncrementalAggregatedResources : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service *service) {}
   public:
    ExperimentalWithRawCallbackMethod_IncrementalAggregatedResources() {
      ::grpc::Service::experimental().MarkMethodRawCallback(1,
        new ::grpc::internal::CallbackBidiHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
          [this] { return this->IncrementalAggregatedResources(); }));
    }
    ~ExperimentalWithRawCallbackMethod_IncrementalAggregatedResources() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status IncrementalAggregatedResources(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::envoy::api::v2::IncrementalDiscoveryResponse, ::envoy::api::v2::IncrementalDiscoveryRequest>* stream)  override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::experimental::ServerBidiReactor< ::grpc::ByteBuffer, ::grpc::ByteBuffer>* IncrementalAggregatedResources() {
      return new ::grpc::internal::UnimplementedBidiReactor<
        ::grpc::ByteBuffer, ::grpc::ByteBuffer>;}
  };
  typedef Service StreamedUnaryService;
  typedef Service SplitStreamedService;
  typedef Service StreamedService;
};

}  // namespace v2
}  // namespace discovery
}  // namespace service
}  // namespace envoy


#endif  // GRPC_ads_2eproto__INCLUDED
