// Generated by the gRPC C++ plugin.
// If you make any local change, they will be lost.
// source: google/pubsub/v1/schema.proto
// Original file comments:
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#ifndef GRPC_google_2fpubsub_2fv1_2fschema_2eproto__INCLUDED
#define GRPC_google_2fpubsub_2fv1_2fschema_2eproto__INCLUDED

#include "google/pubsub/v1/schema.pb.h"

#include <functional>
#include <grpcpp/generic/async_generic_service.h>
#include <grpcpp/support/async_stream.h>
#include <grpcpp/support/async_unary_call.h>
#include <grpcpp/support/client_callback.h>
#include <grpcpp/client_context.h>
#include <grpcpp/completion_queue.h>
#include <grpcpp/support/message_allocator.h>
#include <grpcpp/support/method_handler.h>
#include <grpcpp/impl/proto_utils.h>
#include <grpcpp/impl/rpc_method.h>
#include <grpcpp/support/server_callback.h>
#include <grpcpp/impl/server_callback_handlers.h>
#include <grpcpp/server_context.h>
#include <grpcpp/impl/service_type.h>
#include <grpcpp/support/status.h>
#include <grpcpp/support/stub_options.h>
#include <grpcpp/support/sync_stream.h>
#include <grpcpp/ports_def.inc>

namespace google {
namespace pubsub {
namespace v1 {

// Service for doing schema-related operations.
class SchemaService final {
 public:
  static constexpr char const* service_full_name() {
    return "google.pubsub.v1.SchemaService";
  }
  class StubInterface {
   public:
    virtual ~StubInterface() {}
    // Creates a schema.
    virtual ::grpc::Status CreateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CreateSchemaRequest& request, ::google::pubsub::v1::Schema* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>> AsyncCreateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CreateSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>>(AsyncCreateSchemaRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>> PrepareAsyncCreateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CreateSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>>(PrepareAsyncCreateSchemaRaw(context, request, cq));
    }
    // Gets a schema.
    virtual ::grpc::Status GetSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::GetSchemaRequest& request, ::google::pubsub::v1::Schema* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>> AsyncGetSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::GetSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>>(AsyncGetSchemaRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>> PrepareAsyncGetSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::GetSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>>(PrepareAsyncGetSchemaRaw(context, request, cq));
    }
    // Lists schemas in a project.
    virtual ::grpc::Status ListSchemas(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemasRequest& request, ::google::pubsub::v1::ListSchemasResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ListSchemasResponse>> AsyncListSchemas(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemasRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ListSchemasResponse>>(AsyncListSchemasRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ListSchemasResponse>> PrepareAsyncListSchemas(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemasRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ListSchemasResponse>>(PrepareAsyncListSchemasRaw(context, request, cq));
    }
    // Lists all schema revisions for the named schema.
    virtual ::grpc::Status ListSchemaRevisions(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemaRevisionsRequest& request, ::google::pubsub::v1::ListSchemaRevisionsResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ListSchemaRevisionsResponse>> AsyncListSchemaRevisions(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemaRevisionsRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ListSchemaRevisionsResponse>>(AsyncListSchemaRevisionsRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ListSchemaRevisionsResponse>> PrepareAsyncListSchemaRevisions(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemaRevisionsRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ListSchemaRevisionsResponse>>(PrepareAsyncListSchemaRevisionsRaw(context, request, cq));
    }
    // Commits a new schema revision to an existing schema.
    virtual ::grpc::Status CommitSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CommitSchemaRequest& request, ::google::pubsub::v1::Schema* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>> AsyncCommitSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CommitSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>>(AsyncCommitSchemaRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>> PrepareAsyncCommitSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CommitSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>>(PrepareAsyncCommitSchemaRaw(context, request, cq));
    }
    // Creates a new schema revision that is a copy of the provided revision_id.
    virtual ::grpc::Status RollbackSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::RollbackSchemaRequest& request, ::google::pubsub::v1::Schema* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>> AsyncRollbackSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::RollbackSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>>(AsyncRollbackSchemaRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>> PrepareAsyncRollbackSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::RollbackSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>>(PrepareAsyncRollbackSchemaRaw(context, request, cq));
    }
    // Deletes a specific schema revision.
    virtual ::grpc::Status DeleteSchemaRevision(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRevisionRequest& request, ::google::pubsub::v1::Schema* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>> AsyncDeleteSchemaRevision(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRevisionRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>>(AsyncDeleteSchemaRevisionRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>> PrepareAsyncDeleteSchemaRevision(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRevisionRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>>(PrepareAsyncDeleteSchemaRevisionRaw(context, request, cq));
    }
    // Deletes a schema.
    virtual ::grpc::Status DeleteSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRequest& request, ::google::protobuf::Empty* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>> AsyncDeleteSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>>(AsyncDeleteSchemaRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>> PrepareAsyncDeleteSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>>(PrepareAsyncDeleteSchemaRaw(context, request, cq));
    }
    // Validates a schema.
    virtual ::grpc::Status ValidateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateSchemaRequest& request, ::google::pubsub::v1::ValidateSchemaResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ValidateSchemaResponse>> AsyncValidateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ValidateSchemaResponse>>(AsyncValidateSchemaRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ValidateSchemaResponse>> PrepareAsyncValidateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ValidateSchemaResponse>>(PrepareAsyncValidateSchemaRaw(context, request, cq));
    }
    // Validates a message against a schema.
    virtual ::grpc::Status ValidateMessage(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateMessageRequest& request, ::google::pubsub::v1::ValidateMessageResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ValidateMessageResponse>> AsyncValidateMessage(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateMessageRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ValidateMessageResponse>>(AsyncValidateMessageRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ValidateMessageResponse>> PrepareAsyncValidateMessage(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateMessageRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ValidateMessageResponse>>(PrepareAsyncValidateMessageRaw(context, request, cq));
    }
    class async_interface {
     public:
      virtual ~async_interface() {}
      // Creates a schema.
      virtual void CreateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CreateSchemaRequest* request, ::google::pubsub::v1::Schema* response, std::function<void(::grpc::Status)>) = 0;
      virtual void CreateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CreateSchemaRequest* request, ::google::pubsub::v1::Schema* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Gets a schema.
      virtual void GetSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::GetSchemaRequest* request, ::google::pubsub::v1::Schema* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::GetSchemaRequest* request, ::google::pubsub::v1::Schema* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Lists schemas in a project.
      virtual void ListSchemas(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemasRequest* request, ::google::pubsub::v1::ListSchemasResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void ListSchemas(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemasRequest* request, ::google::pubsub::v1::ListSchemasResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Lists all schema revisions for the named schema.
      virtual void ListSchemaRevisions(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemaRevisionsRequest* request, ::google::pubsub::v1::ListSchemaRevisionsResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void ListSchemaRevisions(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemaRevisionsRequest* request, ::google::pubsub::v1::ListSchemaRevisionsResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Commits a new schema revision to an existing schema.
      virtual void CommitSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CommitSchemaRequest* request, ::google::pubsub::v1::Schema* response, std::function<void(::grpc::Status)>) = 0;
      virtual void CommitSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CommitSchemaRequest* request, ::google::pubsub::v1::Schema* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Creates a new schema revision that is a copy of the provided revision_id.
      virtual void RollbackSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::RollbackSchemaRequest* request, ::google::pubsub::v1::Schema* response, std::function<void(::grpc::Status)>) = 0;
      virtual void RollbackSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::RollbackSchemaRequest* request, ::google::pubsub::v1::Schema* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Deletes a specific schema revision.
      virtual void DeleteSchemaRevision(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRevisionRequest* request, ::google::pubsub::v1::Schema* response, std::function<void(::grpc::Status)>) = 0;
      virtual void DeleteSchemaRevision(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRevisionRequest* request, ::google::pubsub::v1::Schema* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Deletes a schema.
      virtual void DeleteSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRequest* request, ::google::protobuf::Empty* response, std::function<void(::grpc::Status)>) = 0;
      virtual void DeleteSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRequest* request, ::google::protobuf::Empty* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Validates a schema.
      virtual void ValidateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateSchemaRequest* request, ::google::pubsub::v1::ValidateSchemaResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void ValidateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateSchemaRequest* request, ::google::pubsub::v1::ValidateSchemaResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Validates a message against a schema.
      virtual void ValidateMessage(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateMessageRequest* request, ::google::pubsub::v1::ValidateMessageResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void ValidateMessage(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateMessageRequest* request, ::google::pubsub::v1::ValidateMessageResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
    };
    typedef class async_interface experimental_async_interface;
    virtual class async_interface* async() { return nullptr; }
    class async_interface* experimental_async() { return async(); }
   private:
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>* AsyncCreateSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::CreateSchemaRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>* PrepareAsyncCreateSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::CreateSchemaRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>* AsyncGetSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::GetSchemaRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>* PrepareAsyncGetSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::GetSchemaRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ListSchemasResponse>* AsyncListSchemasRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemasRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ListSchemasResponse>* PrepareAsyncListSchemasRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemasRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ListSchemaRevisionsResponse>* AsyncListSchemaRevisionsRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemaRevisionsRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ListSchemaRevisionsResponse>* PrepareAsyncListSchemaRevisionsRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemaRevisionsRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>* AsyncCommitSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::CommitSchemaRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>* PrepareAsyncCommitSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::CommitSchemaRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>* AsyncRollbackSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::RollbackSchemaRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>* PrepareAsyncRollbackSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::RollbackSchemaRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>* AsyncDeleteSchemaRevisionRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRevisionRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::Schema>* PrepareAsyncDeleteSchemaRevisionRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRevisionRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>* AsyncDeleteSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>* PrepareAsyncDeleteSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ValidateSchemaResponse>* AsyncValidateSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateSchemaRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ValidateSchemaResponse>* PrepareAsyncValidateSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateSchemaRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ValidateMessageResponse>* AsyncValidateMessageRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateMessageRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::pubsub::v1::ValidateMessageResponse>* PrepareAsyncValidateMessageRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateMessageRequest& request, ::grpc::CompletionQueue* cq) = 0;
  };
  class Stub final : public StubInterface {
   public:
    Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
    ::grpc::Status CreateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CreateSchemaRequest& request, ::google::pubsub::v1::Schema* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>> AsyncCreateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CreateSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>>(AsyncCreateSchemaRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>> PrepareAsyncCreateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CreateSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>>(PrepareAsyncCreateSchemaRaw(context, request, cq));
    }
    ::grpc::Status GetSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::GetSchemaRequest& request, ::google::pubsub::v1::Schema* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>> AsyncGetSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::GetSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>>(AsyncGetSchemaRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>> PrepareAsyncGetSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::GetSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>>(PrepareAsyncGetSchemaRaw(context, request, cq));
    }
    ::grpc::Status ListSchemas(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemasRequest& request, ::google::pubsub::v1::ListSchemasResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ListSchemasResponse>> AsyncListSchemas(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemasRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ListSchemasResponse>>(AsyncListSchemasRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ListSchemasResponse>> PrepareAsyncListSchemas(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemasRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ListSchemasResponse>>(PrepareAsyncListSchemasRaw(context, request, cq));
    }
    ::grpc::Status ListSchemaRevisions(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemaRevisionsRequest& request, ::google::pubsub::v1::ListSchemaRevisionsResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ListSchemaRevisionsResponse>> AsyncListSchemaRevisions(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemaRevisionsRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ListSchemaRevisionsResponse>>(AsyncListSchemaRevisionsRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ListSchemaRevisionsResponse>> PrepareAsyncListSchemaRevisions(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemaRevisionsRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ListSchemaRevisionsResponse>>(PrepareAsyncListSchemaRevisionsRaw(context, request, cq));
    }
    ::grpc::Status CommitSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CommitSchemaRequest& request, ::google::pubsub::v1::Schema* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>> AsyncCommitSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CommitSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>>(AsyncCommitSchemaRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>> PrepareAsyncCommitSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CommitSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>>(PrepareAsyncCommitSchemaRaw(context, request, cq));
    }
    ::grpc::Status RollbackSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::RollbackSchemaRequest& request, ::google::pubsub::v1::Schema* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>> AsyncRollbackSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::RollbackSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>>(AsyncRollbackSchemaRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>> PrepareAsyncRollbackSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::RollbackSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>>(PrepareAsyncRollbackSchemaRaw(context, request, cq));
    }
    ::grpc::Status DeleteSchemaRevision(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRevisionRequest& request, ::google::pubsub::v1::Schema* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>> AsyncDeleteSchemaRevision(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRevisionRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>>(AsyncDeleteSchemaRevisionRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>> PrepareAsyncDeleteSchemaRevision(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRevisionRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>>(PrepareAsyncDeleteSchemaRevisionRaw(context, request, cq));
    }
    ::grpc::Status DeleteSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRequest& request, ::google::protobuf::Empty* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>> AsyncDeleteSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>>(AsyncDeleteSchemaRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>> PrepareAsyncDeleteSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>>(PrepareAsyncDeleteSchemaRaw(context, request, cq));
    }
    ::grpc::Status ValidateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateSchemaRequest& request, ::google::pubsub::v1::ValidateSchemaResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ValidateSchemaResponse>> AsyncValidateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ValidateSchemaResponse>>(AsyncValidateSchemaRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ValidateSchemaResponse>> PrepareAsyncValidateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateSchemaRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ValidateSchemaResponse>>(PrepareAsyncValidateSchemaRaw(context, request, cq));
    }
    ::grpc::Status ValidateMessage(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateMessageRequest& request, ::google::pubsub::v1::ValidateMessageResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ValidateMessageResponse>> AsyncValidateMessage(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateMessageRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ValidateMessageResponse>>(AsyncValidateMessageRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ValidateMessageResponse>> PrepareAsyncValidateMessage(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateMessageRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ValidateMessageResponse>>(PrepareAsyncValidateMessageRaw(context, request, cq));
    }
    class async final :
      public StubInterface::async_interface {
     public:
      void CreateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CreateSchemaRequest* request, ::google::pubsub::v1::Schema* response, std::function<void(::grpc::Status)>) override;
      void CreateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CreateSchemaRequest* request, ::google::pubsub::v1::Schema* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::GetSchemaRequest* request, ::google::pubsub::v1::Schema* response, std::function<void(::grpc::Status)>) override;
      void GetSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::GetSchemaRequest* request, ::google::pubsub::v1::Schema* response, ::grpc::ClientUnaryReactor* reactor) override;
      void ListSchemas(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemasRequest* request, ::google::pubsub::v1::ListSchemasResponse* response, std::function<void(::grpc::Status)>) override;
      void ListSchemas(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemasRequest* request, ::google::pubsub::v1::ListSchemasResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void ListSchemaRevisions(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemaRevisionsRequest* request, ::google::pubsub::v1::ListSchemaRevisionsResponse* response, std::function<void(::grpc::Status)>) override;
      void ListSchemaRevisions(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemaRevisionsRequest* request, ::google::pubsub::v1::ListSchemaRevisionsResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void CommitSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CommitSchemaRequest* request, ::google::pubsub::v1::Schema* response, std::function<void(::grpc::Status)>) override;
      void CommitSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::CommitSchemaRequest* request, ::google::pubsub::v1::Schema* response, ::grpc::ClientUnaryReactor* reactor) override;
      void RollbackSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::RollbackSchemaRequest* request, ::google::pubsub::v1::Schema* response, std::function<void(::grpc::Status)>) override;
      void RollbackSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::RollbackSchemaRequest* request, ::google::pubsub::v1::Schema* response, ::grpc::ClientUnaryReactor* reactor) override;
      void DeleteSchemaRevision(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRevisionRequest* request, ::google::pubsub::v1::Schema* response, std::function<void(::grpc::Status)>) override;
      void DeleteSchemaRevision(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRevisionRequest* request, ::google::pubsub::v1::Schema* response, ::grpc::ClientUnaryReactor* reactor) override;
      void DeleteSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRequest* request, ::google::protobuf::Empty* response, std::function<void(::grpc::Status)>) override;
      void DeleteSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRequest* request, ::google::protobuf::Empty* response, ::grpc::ClientUnaryReactor* reactor) override;
      void ValidateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateSchemaRequest* request, ::google::pubsub::v1::ValidateSchemaResponse* response, std::function<void(::grpc::Status)>) override;
      void ValidateSchema(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateSchemaRequest* request, ::google::pubsub::v1::ValidateSchemaResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void ValidateMessage(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateMessageRequest* request, ::google::pubsub::v1::ValidateMessageResponse* response, std::function<void(::grpc::Status)>) override;
      void ValidateMessage(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateMessageRequest* request, ::google::pubsub::v1::ValidateMessageResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
     private:
      friend class Stub;
      explicit async(Stub* stub): stub_(stub) { }
      Stub* stub() { return stub_; }
      Stub* stub_;
    };
    class async* async() override { return &async_stub_; }

   private:
    std::shared_ptr< ::grpc::ChannelInterface> channel_;
    class async async_stub_{this};
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>* AsyncCreateSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::CreateSchemaRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>* PrepareAsyncCreateSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::CreateSchemaRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>* AsyncGetSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::GetSchemaRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>* PrepareAsyncGetSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::GetSchemaRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ListSchemasResponse>* AsyncListSchemasRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemasRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ListSchemasResponse>* PrepareAsyncListSchemasRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemasRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ListSchemaRevisionsResponse>* AsyncListSchemaRevisionsRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemaRevisionsRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ListSchemaRevisionsResponse>* PrepareAsyncListSchemaRevisionsRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ListSchemaRevisionsRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>* AsyncCommitSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::CommitSchemaRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>* PrepareAsyncCommitSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::CommitSchemaRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>* AsyncRollbackSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::RollbackSchemaRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>* PrepareAsyncRollbackSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::RollbackSchemaRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>* AsyncDeleteSchemaRevisionRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRevisionRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::Schema>* PrepareAsyncDeleteSchemaRevisionRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRevisionRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>* AsyncDeleteSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>* PrepareAsyncDeleteSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::DeleteSchemaRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ValidateSchemaResponse>* AsyncValidateSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateSchemaRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ValidateSchemaResponse>* PrepareAsyncValidateSchemaRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateSchemaRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ValidateMessageResponse>* AsyncValidateMessageRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateMessageRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::google::pubsub::v1::ValidateMessageResponse>* PrepareAsyncValidateMessageRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ValidateMessageRequest& request, ::grpc::CompletionQueue* cq) override;
    const ::grpc::internal::RpcMethod rpcmethod_CreateSchema_;
    const ::grpc::internal::RpcMethod rpcmethod_GetSchema_;
    const ::grpc::internal::RpcMethod rpcmethod_ListSchemas_;
    const ::grpc::internal::RpcMethod rpcmethod_ListSchemaRevisions_;
    const ::grpc::internal::RpcMethod rpcmethod_CommitSchema_;
    const ::grpc::internal::RpcMethod rpcmethod_RollbackSchema_;
    const ::grpc::internal::RpcMethod rpcmethod_DeleteSchemaRevision_;
    const ::grpc::internal::RpcMethod rpcmethod_DeleteSchema_;
    const ::grpc::internal::RpcMethod rpcmethod_ValidateSchema_;
    const ::grpc::internal::RpcMethod rpcmethod_ValidateMessage_;
  };
  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();
    // Creates a schema.
    virtual ::grpc::Status CreateSchema(::grpc::ServerContext* context, const ::google::pubsub::v1::CreateSchemaRequest* request, ::google::pubsub::v1::Schema* response);
    // Gets a schema.
    virtual ::grpc::Status GetSchema(::grpc::ServerContext* context, const ::google::pubsub::v1::GetSchemaRequest* request, ::google::pubsub::v1::Schema* response);
    // Lists schemas in a project.
    virtual ::grpc::Status ListSchemas(::grpc::ServerContext* context, const ::google::pubsub::v1::ListSchemasRequest* request, ::google::pubsub::v1::ListSchemasResponse* response);
    // Lists all schema revisions for the named schema.
    virtual ::grpc::Status ListSchemaRevisions(::grpc::ServerContext* context, const ::google::pubsub::v1::ListSchemaRevisionsRequest* request, ::google::pubsub::v1::ListSchemaRevisionsResponse* response);
    // Commits a new schema revision to an existing schema.
    virtual ::grpc::Status CommitSchema(::grpc::ServerContext* context, const ::google::pubsub::v1::CommitSchemaRequest* request, ::google::pubsub::v1::Schema* response);
    // Creates a new schema revision that is a copy of the provided revision_id.
    virtual ::grpc::Status RollbackSchema(::grpc::ServerContext* context, const ::google::pubsub::v1::RollbackSchemaRequest* request, ::google::pubsub::v1::Schema* response);
    // Deletes a specific schema revision.
    virtual ::grpc::Status DeleteSchemaRevision(::grpc::ServerContext* context, const ::google::pubsub::v1::DeleteSchemaRevisionRequest* request, ::google::pubsub::v1::Schema* response);
    // Deletes a schema.
    virtual ::grpc::Status DeleteSchema(::grpc::ServerContext* context, const ::google::pubsub::v1::DeleteSchemaRequest* request, ::google::protobuf::Empty* response);
    // Validates a schema.
    virtual ::grpc::Status ValidateSchema(::grpc::ServerContext* context, const ::google::pubsub::v1::ValidateSchemaRequest* request, ::google::pubsub::v1::ValidateSchemaResponse* response);
    // Validates a message against a schema.
    virtual ::grpc::Status ValidateMessage(::grpc::ServerContext* context, const ::google::pubsub::v1::ValidateMessageRequest* request, ::google::pubsub::v1::ValidateMessageResponse* response);
  };
  template <class BaseClass>
  class WithAsyncMethod_CreateSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_CreateSchema() {
      ::grpc::Service::MarkMethodAsync(0);
    }
    ~WithAsyncMethod_CreateSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CreateSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::CreateSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestCreateSchema(::grpc::ServerContext* context, ::google::pubsub::v1::CreateSchemaRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::pubsub::v1::Schema>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetSchema() {
      ::grpc::Service::MarkMethodAsync(1);
    }
    ~WithAsyncMethod_GetSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::GetSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetSchema(::grpc::ServerContext* context, ::google::pubsub::v1::GetSchemaRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::pubsub::v1::Schema>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(1, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_ListSchemas : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_ListSchemas() {
      ::grpc::Service::MarkMethodAsync(2);
    }
    ~WithAsyncMethod_ListSchemas() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListSchemas(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ListSchemasRequest* /*request*/, ::google::pubsub::v1::ListSchemasResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestListSchemas(::grpc::ServerContext* context, ::google::pubsub::v1::ListSchemasRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::pubsub::v1::ListSchemasResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(2, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_ListSchemaRevisions : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_ListSchemaRevisions() {
      ::grpc::Service::MarkMethodAsync(3);
    }
    ~WithAsyncMethod_ListSchemaRevisions() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListSchemaRevisions(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ListSchemaRevisionsRequest* /*request*/, ::google::pubsub::v1::ListSchemaRevisionsResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestListSchemaRevisions(::grpc::ServerContext* context, ::google::pubsub::v1::ListSchemaRevisionsRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::pubsub::v1::ListSchemaRevisionsResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(3, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_CommitSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_CommitSchema() {
      ::grpc::Service::MarkMethodAsync(4);
    }
    ~WithAsyncMethod_CommitSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CommitSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::CommitSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestCommitSchema(::grpc::ServerContext* context, ::google::pubsub::v1::CommitSchemaRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::pubsub::v1::Schema>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(4, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_RollbackSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_RollbackSchema() {
      ::grpc::Service::MarkMethodAsync(5);
    }
    ~WithAsyncMethod_RollbackSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status RollbackSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::RollbackSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestRollbackSchema(::grpc::ServerContext* context, ::google::pubsub::v1::RollbackSchemaRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::pubsub::v1::Schema>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(5, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_DeleteSchemaRevision : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_DeleteSchemaRevision() {
      ::grpc::Service::MarkMethodAsync(6);
    }
    ~WithAsyncMethod_DeleteSchemaRevision() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteSchemaRevision(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::DeleteSchemaRevisionRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDeleteSchemaRevision(::grpc::ServerContext* context, ::google::pubsub::v1::DeleteSchemaRevisionRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::pubsub::v1::Schema>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(6, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_DeleteSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_DeleteSchema() {
      ::grpc::Service::MarkMethodAsync(7);
    }
    ~WithAsyncMethod_DeleteSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::DeleteSchemaRequest* /*request*/, ::google::protobuf::Empty* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDeleteSchema(::grpc::ServerContext* context, ::google::pubsub::v1::DeleteSchemaRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::protobuf::Empty>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(7, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_ValidateSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_ValidateSchema() {
      ::grpc::Service::MarkMethodAsync(8);
    }
    ~WithAsyncMethod_ValidateSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ValidateSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ValidateSchemaRequest* /*request*/, ::google::pubsub::v1::ValidateSchemaResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestValidateSchema(::grpc::ServerContext* context, ::google::pubsub::v1::ValidateSchemaRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::pubsub::v1::ValidateSchemaResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(8, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_ValidateMessage : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_ValidateMessage() {
      ::grpc::Service::MarkMethodAsync(9);
    }
    ~WithAsyncMethod_ValidateMessage() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ValidateMessage(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ValidateMessageRequest* /*request*/, ::google::pubsub::v1::ValidateMessageResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestValidateMessage(::grpc::ServerContext* context, ::google::pubsub::v1::ValidateMessageRequest* request, ::grpc::ServerAsyncResponseWriter< ::google::pubsub::v1::ValidateMessageResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(9, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  typedef WithAsyncMethod_CreateSchema<WithAsyncMethod_GetSchema<WithAsyncMethod_ListSchemas<WithAsyncMethod_ListSchemaRevisions<WithAsyncMethod_CommitSchema<WithAsyncMethod_RollbackSchema<WithAsyncMethod_DeleteSchemaRevision<WithAsyncMethod_DeleteSchema<WithAsyncMethod_ValidateSchema<WithAsyncMethod_ValidateMessage<Service > > > > > > > > > > AsyncService;
  template <class BaseClass>
  class WithCallbackMethod_CreateSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_CreateSchema() {
      ::grpc::Service::MarkMethodCallback(0,
          new ::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::CreateSchemaRequest, ::google::pubsub::v1::Schema>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::google::pubsub::v1::CreateSchemaRequest* request, ::google::pubsub::v1::Schema* response) { return this->CreateSchema(context, request, response); }));}
    void SetMessageAllocatorFor_CreateSchema(
        ::grpc::MessageAllocator< ::google::pubsub::v1::CreateSchemaRequest, ::google::pubsub::v1::Schema>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(0);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::CreateSchemaRequest, ::google::pubsub::v1::Schema>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_CreateSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CreateSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::CreateSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* CreateSchema(
      ::grpc::CallbackServerContext* /*context*/, const ::google::pubsub::v1::CreateSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetSchema() {
      ::grpc::Service::MarkMethodCallback(1,
          new ::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::GetSchemaRequest, ::google::pubsub::v1::Schema>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::google::pubsub::v1::GetSchemaRequest* request, ::google::pubsub::v1::Schema* response) { return this->GetSchema(context, request, response); }));}
    void SetMessageAllocatorFor_GetSchema(
        ::grpc::MessageAllocator< ::google::pubsub::v1::GetSchemaRequest, ::google::pubsub::v1::Schema>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(1);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::GetSchemaRequest, ::google::pubsub::v1::Schema>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::GetSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetSchema(
      ::grpc::CallbackServerContext* /*context*/, const ::google::pubsub::v1::GetSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_ListSchemas : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_ListSchemas() {
      ::grpc::Service::MarkMethodCallback(2,
          new ::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::ListSchemasRequest, ::google::pubsub::v1::ListSchemasResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::google::pubsub::v1::ListSchemasRequest* request, ::google::pubsub::v1::ListSchemasResponse* response) { return this->ListSchemas(context, request, response); }));}
    void SetMessageAllocatorFor_ListSchemas(
        ::grpc::MessageAllocator< ::google::pubsub::v1::ListSchemasRequest, ::google::pubsub::v1::ListSchemasResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(2);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::ListSchemasRequest, ::google::pubsub::v1::ListSchemasResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_ListSchemas() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListSchemas(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ListSchemasRequest* /*request*/, ::google::pubsub::v1::ListSchemasResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ListSchemas(
      ::grpc::CallbackServerContext* /*context*/, const ::google::pubsub::v1::ListSchemasRequest* /*request*/, ::google::pubsub::v1::ListSchemasResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_ListSchemaRevisions : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_ListSchemaRevisions() {
      ::grpc::Service::MarkMethodCallback(3,
          new ::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::ListSchemaRevisionsRequest, ::google::pubsub::v1::ListSchemaRevisionsResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::google::pubsub::v1::ListSchemaRevisionsRequest* request, ::google::pubsub::v1::ListSchemaRevisionsResponse* response) { return this->ListSchemaRevisions(context, request, response); }));}
    void SetMessageAllocatorFor_ListSchemaRevisions(
        ::grpc::MessageAllocator< ::google::pubsub::v1::ListSchemaRevisionsRequest, ::google::pubsub::v1::ListSchemaRevisionsResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(3);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::ListSchemaRevisionsRequest, ::google::pubsub::v1::ListSchemaRevisionsResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_ListSchemaRevisions() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListSchemaRevisions(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ListSchemaRevisionsRequest* /*request*/, ::google::pubsub::v1::ListSchemaRevisionsResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ListSchemaRevisions(
      ::grpc::CallbackServerContext* /*context*/, const ::google::pubsub::v1::ListSchemaRevisionsRequest* /*request*/, ::google::pubsub::v1::ListSchemaRevisionsResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_CommitSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_CommitSchema() {
      ::grpc::Service::MarkMethodCallback(4,
          new ::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::CommitSchemaRequest, ::google::pubsub::v1::Schema>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::google::pubsub::v1::CommitSchemaRequest* request, ::google::pubsub::v1::Schema* response) { return this->CommitSchema(context, request, response); }));}
    void SetMessageAllocatorFor_CommitSchema(
        ::grpc::MessageAllocator< ::google::pubsub::v1::CommitSchemaRequest, ::google::pubsub::v1::Schema>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(4);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::CommitSchemaRequest, ::google::pubsub::v1::Schema>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_CommitSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CommitSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::CommitSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* CommitSchema(
      ::grpc::CallbackServerContext* /*context*/, const ::google::pubsub::v1::CommitSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_RollbackSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_RollbackSchema() {
      ::grpc::Service::MarkMethodCallback(5,
          new ::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::RollbackSchemaRequest, ::google::pubsub::v1::Schema>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::google::pubsub::v1::RollbackSchemaRequest* request, ::google::pubsub::v1::Schema* response) { return this->RollbackSchema(context, request, response); }));}
    void SetMessageAllocatorFor_RollbackSchema(
        ::grpc::MessageAllocator< ::google::pubsub::v1::RollbackSchemaRequest, ::google::pubsub::v1::Schema>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(5);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::RollbackSchemaRequest, ::google::pubsub::v1::Schema>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_RollbackSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status RollbackSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::RollbackSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* RollbackSchema(
      ::grpc::CallbackServerContext* /*context*/, const ::google::pubsub::v1::RollbackSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_DeleteSchemaRevision : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_DeleteSchemaRevision() {
      ::grpc::Service::MarkMethodCallback(6,
          new ::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::DeleteSchemaRevisionRequest, ::google::pubsub::v1::Schema>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::google::pubsub::v1::DeleteSchemaRevisionRequest* request, ::google::pubsub::v1::Schema* response) { return this->DeleteSchemaRevision(context, request, response); }));}
    void SetMessageAllocatorFor_DeleteSchemaRevision(
        ::grpc::MessageAllocator< ::google::pubsub::v1::DeleteSchemaRevisionRequest, ::google::pubsub::v1::Schema>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(6);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::DeleteSchemaRevisionRequest, ::google::pubsub::v1::Schema>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_DeleteSchemaRevision() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteSchemaRevision(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::DeleteSchemaRevisionRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* DeleteSchemaRevision(
      ::grpc::CallbackServerContext* /*context*/, const ::google::pubsub::v1::DeleteSchemaRevisionRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_DeleteSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_DeleteSchema() {
      ::grpc::Service::MarkMethodCallback(7,
          new ::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::DeleteSchemaRequest, ::google::protobuf::Empty>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::google::pubsub::v1::DeleteSchemaRequest* request, ::google::protobuf::Empty* response) { return this->DeleteSchema(context, request, response); }));}
    void SetMessageAllocatorFor_DeleteSchema(
        ::grpc::MessageAllocator< ::google::pubsub::v1::DeleteSchemaRequest, ::google::protobuf::Empty>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(7);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::DeleteSchemaRequest, ::google::protobuf::Empty>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_DeleteSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::DeleteSchemaRequest* /*request*/, ::google::protobuf::Empty* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* DeleteSchema(
      ::grpc::CallbackServerContext* /*context*/, const ::google::pubsub::v1::DeleteSchemaRequest* /*request*/, ::google::protobuf::Empty* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_ValidateSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_ValidateSchema() {
      ::grpc::Service::MarkMethodCallback(8,
          new ::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::ValidateSchemaRequest, ::google::pubsub::v1::ValidateSchemaResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::google::pubsub::v1::ValidateSchemaRequest* request, ::google::pubsub::v1::ValidateSchemaResponse* response) { return this->ValidateSchema(context, request, response); }));}
    void SetMessageAllocatorFor_ValidateSchema(
        ::grpc::MessageAllocator< ::google::pubsub::v1::ValidateSchemaRequest, ::google::pubsub::v1::ValidateSchemaResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(8);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::ValidateSchemaRequest, ::google::pubsub::v1::ValidateSchemaResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_ValidateSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ValidateSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ValidateSchemaRequest* /*request*/, ::google::pubsub::v1::ValidateSchemaResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ValidateSchema(
      ::grpc::CallbackServerContext* /*context*/, const ::google::pubsub::v1::ValidateSchemaRequest* /*request*/, ::google::pubsub::v1::ValidateSchemaResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_ValidateMessage : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_ValidateMessage() {
      ::grpc::Service::MarkMethodCallback(9,
          new ::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::ValidateMessageRequest, ::google::pubsub::v1::ValidateMessageResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::google::pubsub::v1::ValidateMessageRequest* request, ::google::pubsub::v1::ValidateMessageResponse* response) { return this->ValidateMessage(context, request, response); }));}
    void SetMessageAllocatorFor_ValidateMessage(
        ::grpc::MessageAllocator< ::google::pubsub::v1::ValidateMessageRequest, ::google::pubsub::v1::ValidateMessageResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(9);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::google::pubsub::v1::ValidateMessageRequest, ::google::pubsub::v1::ValidateMessageResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_ValidateMessage() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ValidateMessage(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ValidateMessageRequest* /*request*/, ::google::pubsub::v1::ValidateMessageResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ValidateMessage(
      ::grpc::CallbackServerContext* /*context*/, const ::google::pubsub::v1::ValidateMessageRequest* /*request*/, ::google::pubsub::v1::ValidateMessageResponse* /*response*/)  { return nullptr; }
  };
  typedef WithCallbackMethod_CreateSchema<WithCallbackMethod_GetSchema<WithCallbackMethod_ListSchemas<WithCallbackMethod_ListSchemaRevisions<WithCallbackMethod_CommitSchema<WithCallbackMethod_RollbackSchema<WithCallbackMethod_DeleteSchemaRevision<WithCallbackMethod_DeleteSchema<WithCallbackMethod_ValidateSchema<WithCallbackMethod_ValidateMessage<Service > > > > > > > > > > CallbackService;
  typedef CallbackService ExperimentalCallbackService;
  template <class BaseClass>
  class WithGenericMethod_CreateSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_CreateSchema() {
      ::grpc::Service::MarkMethodGeneric(0);
    }
    ~WithGenericMethod_CreateSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CreateSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::CreateSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetSchema() {
      ::grpc::Service::MarkMethodGeneric(1);
    }
    ~WithGenericMethod_GetSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::GetSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_ListSchemas : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_ListSchemas() {
      ::grpc::Service::MarkMethodGeneric(2);
    }
    ~WithGenericMethod_ListSchemas() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListSchemas(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ListSchemasRequest* /*request*/, ::google::pubsub::v1::ListSchemasResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_ListSchemaRevisions : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_ListSchemaRevisions() {
      ::grpc::Service::MarkMethodGeneric(3);
    }
    ~WithGenericMethod_ListSchemaRevisions() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListSchemaRevisions(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ListSchemaRevisionsRequest* /*request*/, ::google::pubsub::v1::ListSchemaRevisionsResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_CommitSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_CommitSchema() {
      ::grpc::Service::MarkMethodGeneric(4);
    }
    ~WithGenericMethod_CommitSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CommitSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::CommitSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_RollbackSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_RollbackSchema() {
      ::grpc::Service::MarkMethodGeneric(5);
    }
    ~WithGenericMethod_RollbackSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status RollbackSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::RollbackSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_DeleteSchemaRevision : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_DeleteSchemaRevision() {
      ::grpc::Service::MarkMethodGeneric(6);
    }
    ~WithGenericMethod_DeleteSchemaRevision() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteSchemaRevision(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::DeleteSchemaRevisionRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_DeleteSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_DeleteSchema() {
      ::grpc::Service::MarkMethodGeneric(7);
    }
    ~WithGenericMethod_DeleteSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::DeleteSchemaRequest* /*request*/, ::google::protobuf::Empty* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_ValidateSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_ValidateSchema() {
      ::grpc::Service::MarkMethodGeneric(8);
    }
    ~WithGenericMethod_ValidateSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ValidateSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ValidateSchemaRequest* /*request*/, ::google::pubsub::v1::ValidateSchemaResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_ValidateMessage : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_ValidateMessage() {
      ::grpc::Service::MarkMethodGeneric(9);
    }
    ~WithGenericMethod_ValidateMessage() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ValidateMessage(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ValidateMessageRequest* /*request*/, ::google::pubsub::v1::ValidateMessageResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithRawMethod_CreateSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_CreateSchema() {
      ::grpc::Service::MarkMethodRaw(0);
    }
    ~WithRawMethod_CreateSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CreateSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::CreateSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestCreateSchema(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetSchema() {
      ::grpc::Service::MarkMethodRaw(1);
    }
    ~WithRawMethod_GetSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::GetSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetSchema(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(1, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_ListSchemas : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_ListSchemas() {
      ::grpc::Service::MarkMethodRaw(2);
    }
    ~WithRawMethod_ListSchemas() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListSchemas(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ListSchemasRequest* /*request*/, ::google::pubsub::v1::ListSchemasResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestListSchemas(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(2, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_ListSchemaRevisions : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_ListSchemaRevisions() {
      ::grpc::Service::MarkMethodRaw(3);
    }
    ~WithRawMethod_ListSchemaRevisions() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListSchemaRevisions(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ListSchemaRevisionsRequest* /*request*/, ::google::pubsub::v1::ListSchemaRevisionsResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestListSchemaRevisions(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(3, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_CommitSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_CommitSchema() {
      ::grpc::Service::MarkMethodRaw(4);
    }
    ~WithRawMethod_CommitSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CommitSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::CommitSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestCommitSchema(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(4, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_RollbackSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_RollbackSchema() {
      ::grpc::Service::MarkMethodRaw(5);
    }
    ~WithRawMethod_RollbackSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status RollbackSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::RollbackSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestRollbackSchema(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(5, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_DeleteSchemaRevision : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_DeleteSchemaRevision() {
      ::grpc::Service::MarkMethodRaw(6);
    }
    ~WithRawMethod_DeleteSchemaRevision() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteSchemaRevision(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::DeleteSchemaRevisionRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDeleteSchemaRevision(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(6, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_DeleteSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_DeleteSchema() {
      ::grpc::Service::MarkMethodRaw(7);
    }
    ~WithRawMethod_DeleteSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::DeleteSchemaRequest* /*request*/, ::google::protobuf::Empty* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDeleteSchema(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(7, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_ValidateSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_ValidateSchema() {
      ::grpc::Service::MarkMethodRaw(8);
    }
    ~WithRawMethod_ValidateSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ValidateSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ValidateSchemaRequest* /*request*/, ::google::pubsub::v1::ValidateSchemaResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestValidateSchema(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(8, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_ValidateMessage : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_ValidateMessage() {
      ::grpc::Service::MarkMethodRaw(9);
    }
    ~WithRawMethod_ValidateMessage() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ValidateMessage(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ValidateMessageRequest* /*request*/, ::google::pubsub::v1::ValidateMessageResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestValidateMessage(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(9, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_CreateSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_CreateSchema() {
      ::grpc::Service::MarkMethodRawCallback(0,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->CreateSchema(context, request, response); }));
    }
    ~WithRawCallbackMethod_CreateSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CreateSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::CreateSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* CreateSchema(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetSchema() {
      ::grpc::Service::MarkMethodRawCallback(1,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetSchema(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::GetSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetSchema(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_ListSchemas : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_ListSchemas() {
      ::grpc::Service::MarkMethodRawCallback(2,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->ListSchemas(context, request, response); }));
    }
    ~WithRawCallbackMethod_ListSchemas() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListSchemas(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ListSchemasRequest* /*request*/, ::google::pubsub::v1::ListSchemasResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ListSchemas(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_ListSchemaRevisions : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_ListSchemaRevisions() {
      ::grpc::Service::MarkMethodRawCallback(3,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->ListSchemaRevisions(context, request, response); }));
    }
    ~WithRawCallbackMethod_ListSchemaRevisions() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListSchemaRevisions(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ListSchemaRevisionsRequest* /*request*/, ::google::pubsub::v1::ListSchemaRevisionsResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ListSchemaRevisions(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_CommitSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_CommitSchema() {
      ::grpc::Service::MarkMethodRawCallback(4,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->CommitSchema(context, request, response); }));
    }
    ~WithRawCallbackMethod_CommitSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CommitSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::CommitSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* CommitSchema(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_RollbackSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_RollbackSchema() {
      ::grpc::Service::MarkMethodRawCallback(5,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->RollbackSchema(context, request, response); }));
    }
    ~WithRawCallbackMethod_RollbackSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status RollbackSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::RollbackSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* RollbackSchema(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_DeleteSchemaRevision : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_DeleteSchemaRevision() {
      ::grpc::Service::MarkMethodRawCallback(6,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->DeleteSchemaRevision(context, request, response); }));
    }
    ~WithRawCallbackMethod_DeleteSchemaRevision() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteSchemaRevision(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::DeleteSchemaRevisionRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* DeleteSchemaRevision(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_DeleteSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_DeleteSchema() {
      ::grpc::Service::MarkMethodRawCallback(7,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->DeleteSchema(context, request, response); }));
    }
    ~WithRawCallbackMethod_DeleteSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::DeleteSchemaRequest* /*request*/, ::google::protobuf::Empty* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* DeleteSchema(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_ValidateSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_ValidateSchema() {
      ::grpc::Service::MarkMethodRawCallback(8,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->ValidateSchema(context, request, response); }));
    }
    ~WithRawCallbackMethod_ValidateSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ValidateSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ValidateSchemaRequest* /*request*/, ::google::pubsub::v1::ValidateSchemaResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ValidateSchema(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_ValidateMessage : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_ValidateMessage() {
      ::grpc::Service::MarkMethodRawCallback(9,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->ValidateMessage(context, request, response); }));
    }
    ~WithRawCallbackMethod_ValidateMessage() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ValidateMessage(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ValidateMessageRequest* /*request*/, ::google::pubsub::v1::ValidateMessageResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ValidateMessage(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_CreateSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_CreateSchema() {
      ::grpc::Service::MarkMethodStreamed(0,
        new ::grpc::internal::StreamedUnaryHandler<
          ::google::pubsub::v1::CreateSchemaRequest, ::google::pubsub::v1::Schema>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::google::pubsub::v1::CreateSchemaRequest, ::google::pubsub::v1::Schema>* streamer) {
                       return this->StreamedCreateSchema(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_CreateSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status CreateSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::CreateSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedCreateSchema(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::pubsub::v1::CreateSchemaRequest,::google::pubsub::v1::Schema>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetSchema() {
      ::grpc::Service::MarkMethodStreamed(1,
        new ::grpc::internal::StreamedUnaryHandler<
          ::google::pubsub::v1::GetSchemaRequest, ::google::pubsub::v1::Schema>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::google::pubsub::v1::GetSchemaRequest, ::google::pubsub::v1::Schema>* streamer) {
                       return this->StreamedGetSchema(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::GetSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetSchema(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::pubsub::v1::GetSchemaRequest,::google::pubsub::v1::Schema>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_ListSchemas : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_ListSchemas() {
      ::grpc::Service::MarkMethodStreamed(2,
        new ::grpc::internal::StreamedUnaryHandler<
          ::google::pubsub::v1::ListSchemasRequest, ::google::pubsub::v1::ListSchemasResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::google::pubsub::v1::ListSchemasRequest, ::google::pubsub::v1::ListSchemasResponse>* streamer) {
                       return this->StreamedListSchemas(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_ListSchemas() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status ListSchemas(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ListSchemasRequest* /*request*/, ::google::pubsub::v1::ListSchemasResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedListSchemas(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::pubsub::v1::ListSchemasRequest,::google::pubsub::v1::ListSchemasResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_ListSchemaRevisions : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_ListSchemaRevisions() {
      ::grpc::Service::MarkMethodStreamed(3,
        new ::grpc::internal::StreamedUnaryHandler<
          ::google::pubsub::v1::ListSchemaRevisionsRequest, ::google::pubsub::v1::ListSchemaRevisionsResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::google::pubsub::v1::ListSchemaRevisionsRequest, ::google::pubsub::v1::ListSchemaRevisionsResponse>* streamer) {
                       return this->StreamedListSchemaRevisions(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_ListSchemaRevisions() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status ListSchemaRevisions(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ListSchemaRevisionsRequest* /*request*/, ::google::pubsub::v1::ListSchemaRevisionsResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedListSchemaRevisions(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::pubsub::v1::ListSchemaRevisionsRequest,::google::pubsub::v1::ListSchemaRevisionsResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_CommitSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_CommitSchema() {
      ::grpc::Service::MarkMethodStreamed(4,
        new ::grpc::internal::StreamedUnaryHandler<
          ::google::pubsub::v1::CommitSchemaRequest, ::google::pubsub::v1::Schema>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::google::pubsub::v1::CommitSchemaRequest, ::google::pubsub::v1::Schema>* streamer) {
                       return this->StreamedCommitSchema(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_CommitSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status CommitSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::CommitSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedCommitSchema(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::pubsub::v1::CommitSchemaRequest,::google::pubsub::v1::Schema>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_RollbackSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_RollbackSchema() {
      ::grpc::Service::MarkMethodStreamed(5,
        new ::grpc::internal::StreamedUnaryHandler<
          ::google::pubsub::v1::RollbackSchemaRequest, ::google::pubsub::v1::Schema>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::google::pubsub::v1::RollbackSchemaRequest, ::google::pubsub::v1::Schema>* streamer) {
                       return this->StreamedRollbackSchema(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_RollbackSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status RollbackSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::RollbackSchemaRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedRollbackSchema(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::pubsub::v1::RollbackSchemaRequest,::google::pubsub::v1::Schema>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_DeleteSchemaRevision : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_DeleteSchemaRevision() {
      ::grpc::Service::MarkMethodStreamed(6,
        new ::grpc::internal::StreamedUnaryHandler<
          ::google::pubsub::v1::DeleteSchemaRevisionRequest, ::google::pubsub::v1::Schema>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::google::pubsub::v1::DeleteSchemaRevisionRequest, ::google::pubsub::v1::Schema>* streamer) {
                       return this->StreamedDeleteSchemaRevision(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_DeleteSchemaRevision() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status DeleteSchemaRevision(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::DeleteSchemaRevisionRequest* /*request*/, ::google::pubsub::v1::Schema* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedDeleteSchemaRevision(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::pubsub::v1::DeleteSchemaRevisionRequest,::google::pubsub::v1::Schema>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_DeleteSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_DeleteSchema() {
      ::grpc::Service::MarkMethodStreamed(7,
        new ::grpc::internal::StreamedUnaryHandler<
          ::google::pubsub::v1::DeleteSchemaRequest, ::google::protobuf::Empty>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::google::pubsub::v1::DeleteSchemaRequest, ::google::protobuf::Empty>* streamer) {
                       return this->StreamedDeleteSchema(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_DeleteSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status DeleteSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::DeleteSchemaRequest* /*request*/, ::google::protobuf::Empty* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedDeleteSchema(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::pubsub::v1::DeleteSchemaRequest,::google::protobuf::Empty>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_ValidateSchema : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_ValidateSchema() {
      ::grpc::Service::MarkMethodStreamed(8,
        new ::grpc::internal::StreamedUnaryHandler<
          ::google::pubsub::v1::ValidateSchemaRequest, ::google::pubsub::v1::ValidateSchemaResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::google::pubsub::v1::ValidateSchemaRequest, ::google::pubsub::v1::ValidateSchemaResponse>* streamer) {
                       return this->StreamedValidateSchema(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_ValidateSchema() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status ValidateSchema(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ValidateSchemaRequest* /*request*/, ::google::pubsub::v1::ValidateSchemaResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedValidateSchema(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::pubsub::v1::ValidateSchemaRequest,::google::pubsub::v1::ValidateSchemaResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_ValidateMessage : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_ValidateMessage() {
      ::grpc::Service::MarkMethodStreamed(9,
        new ::grpc::internal::StreamedUnaryHandler<
          ::google::pubsub::v1::ValidateMessageRequest, ::google::pubsub::v1::ValidateMessageResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::google::pubsub::v1::ValidateMessageRequest, ::google::pubsub::v1::ValidateMessageResponse>* streamer) {
                       return this->StreamedValidateMessage(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_ValidateMessage() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status ValidateMessage(::grpc::ServerContext* /*context*/, const ::google::pubsub::v1::ValidateMessageRequest* /*request*/, ::google::pubsub::v1::ValidateMessageResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedValidateMessage(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::google::pubsub::v1::ValidateMessageRequest,::google::pubsub::v1::ValidateMessageResponse>* server_unary_streamer) = 0;
  };
  typedef WithStreamedUnaryMethod_CreateSchema<WithStreamedUnaryMethod_GetSchema<WithStreamedUnaryMethod_ListSchemas<WithStreamedUnaryMethod_ListSchemaRevisions<WithStreamedUnaryMethod_CommitSchema<WithStreamedUnaryMethod_RollbackSchema<WithStreamedUnaryMethod_DeleteSchemaRevision<WithStreamedUnaryMethod_DeleteSchema<WithStreamedUnaryMethod_ValidateSchema<WithStreamedUnaryMethod_ValidateMessage<Service > > > > > > > > > > StreamedUnaryService;
  typedef Service SplitStreamedService;
  typedef WithStreamedUnaryMethod_CreateSchema<WithStreamedUnaryMethod_GetSchema<WithStreamedUnaryMethod_ListSchemas<WithStreamedUnaryMethod_ListSchemaRevisions<WithStreamedUnaryMethod_CommitSchema<WithStreamedUnaryMethod_RollbackSchema<WithStreamedUnaryMethod_DeleteSchemaRevision<WithStreamedUnaryMethod_DeleteSchema<WithStreamedUnaryMethod_ValidateSchema<WithStreamedUnaryMethod_ValidateMessage<Service > > > > > > > > > > StreamedService;
};

}  // namespace v1
}  // namespace pubsub
}  // namespace google


#include <grpcpp/ports_undef.inc>
#endif  // GRPC_google_2fpubsub_2fv1_2fschema_2eproto__INCLUDED
