|  | @@ -27,6 +27,7 @@
 | 
	
		
			
				|  |  |  #include "src/proto/grpc/testing/compiler_test.pb.h"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #include <functional>
 | 
	
		
			
				|  |  | +#include <grpc/impl/codegen/port_platform.h>
 | 
	
		
			
				|  |  |  #include <grpcpp/impl/codegen/async_generic_service.h>
 | 
	
		
			
				|  |  |  #include <grpcpp/impl/codegen/async_stream.h>
 | 
	
		
			
				|  |  |  #include <grpcpp/impl/codegen/async_unary_call.h>
 | 
	
	
		
			
				|  | @@ -112,22 +113,48 @@ class ServiceA final {
 | 
	
		
			
				|  |  |        // MethodA1 leading comment 1
 | 
	
		
			
				|  |  |        virtual void MethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, std::function<void(::grpc::Status)>) = 0;
 | 
	
		
			
				|  |  |        virtual void MethodA1(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::grpc::testing::Response* response, std::function<void(::grpc::Status)>) = 0;
 | 
	
		
			
				|  |  | +      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      virtual void MethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, ::grpc::ClientUnaryReactor* reactor) = 0;
 | 
	
		
			
				|  |  | +      #else
 | 
	
		
			
				|  |  |        virtual void MethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0;
 | 
	
		
			
				|  |  | +      #endif
 | 
	
		
			
				|  |  | +      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      virtual void MethodA1(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::grpc::testing::Response* response, ::grpc::ClientUnaryReactor* reactor) = 0;
 | 
	
		
			
				|  |  | +      #else
 | 
	
		
			
				|  |  |        virtual void MethodA1(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::grpc::testing::Response* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0;
 | 
	
		
			
				|  |  | +      #endif
 | 
	
		
			
				|  |  |        // MethodA1 trailing comment 1
 | 
	
		
			
				|  |  |        // MethodA2 detached leading comment 1
 | 
	
		
			
				|  |  |        //
 | 
	
		
			
				|  |  |        // Method A2 leading comment 1
 | 
	
		
			
				|  |  |        // Method A2 leading comment 2
 | 
	
		
			
				|  |  | +      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      virtual void MethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::ClientWriteReactor< ::grpc::testing::Request>* reactor) = 0;
 | 
	
		
			
				|  |  | +      #else
 | 
	
		
			
				|  |  |        virtual void MethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::experimental::ClientWriteReactor< ::grpc::testing::Request>* reactor) = 0;
 | 
	
		
			
				|  |  | +      #endif
 | 
	
		
			
				|  |  |        // MethodA2 trailing comment 1
 | 
	
		
			
				|  |  |        // Method A3 leading comment 1
 | 
	
		
			
				|  |  | +      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      virtual void MethodA3(::grpc::ClientContext* context, ::grpc::testing::Request* request, ::grpc::ClientReadReactor< ::grpc::testing::Response>* reactor) = 0;
 | 
	
		
			
				|  |  | +      #else
 | 
	
		
			
				|  |  |        virtual void MethodA3(::grpc::ClientContext* context, ::grpc::testing::Request* request, ::grpc::experimental::ClientReadReactor< ::grpc::testing::Response>* reactor) = 0;
 | 
	
		
			
				|  |  | +      #endif
 | 
	
		
			
				|  |  |        // Method A3 trailing comment 1
 | 
	
		
			
				|  |  |        // Method A4 leading comment 1
 | 
	
		
			
				|  |  | +      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      virtual void MethodA4(::grpc::ClientContext* context, ::grpc::ClientBidiReactor< ::grpc::testing::Request,::grpc::testing::Response>* reactor) = 0;
 | 
	
		
			
				|  |  | +      #else
 | 
	
		
			
				|  |  |        virtual void MethodA4(::grpc::ClientContext* context, ::grpc::experimental::ClientBidiReactor< ::grpc::testing::Request,::grpc::testing::Response>* reactor) = 0;
 | 
	
		
			
				|  |  | +      #endif
 | 
	
		
			
				|  |  |        // Method A4 trailing comment 1
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +    typedef class experimental_async_interface async_interface;
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +    async_interface* async() { return experimental_async(); }
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  |      virtual class experimental_async_interface* experimental_async() { return nullptr; }
 | 
	
		
			
				|  |  |    private:
 | 
	
		
			
				|  |  |      virtual ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>* AsyncMethodA1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) = 0;
 | 
	
	
		
			
				|  | @@ -184,11 +211,31 @@ class ServiceA final {
 | 
	
		
			
				|  |  |       public:
 | 
	
		
			
				|  |  |        void MethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, std::function<void(::grpc::Status)>) override;
 | 
	
		
			
				|  |  |        void MethodA1(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::grpc::testing::Response* response, std::function<void(::grpc::Status)>) override;
 | 
	
		
			
				|  |  | +      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      void MethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, ::grpc::ClientUnaryReactor* reactor) override;
 | 
	
		
			
				|  |  | +      #else
 | 
	
		
			
				|  |  |        void MethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, ::grpc::experimental::ClientUnaryReactor* reactor) override;
 | 
	
		
			
				|  |  | +      #endif
 | 
	
		
			
				|  |  | +      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      void MethodA1(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::grpc::testing::Response* response, ::grpc::ClientUnaryReactor* reactor) override;
 | 
	
		
			
				|  |  | +      #else
 | 
	
		
			
				|  |  |        void MethodA1(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::grpc::testing::Response* response, ::grpc::experimental::ClientUnaryReactor* reactor) override;
 | 
	
		
			
				|  |  | +      #endif
 | 
	
		
			
				|  |  | +      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      void MethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::ClientWriteReactor< ::grpc::testing::Request>* reactor) override;
 | 
	
		
			
				|  |  | +      #else
 | 
	
		
			
				|  |  |        void MethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::experimental::ClientWriteReactor< ::grpc::testing::Request>* reactor) override;
 | 
	
		
			
				|  |  | +      #endif
 | 
	
		
			
				|  |  | +      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      void MethodA3(::grpc::ClientContext* context, ::grpc::testing::Request* request, ::grpc::ClientReadReactor< ::grpc::testing::Response>* reactor) override;
 | 
	
		
			
				|  |  | +      #else
 | 
	
		
			
				|  |  |        void MethodA3(::grpc::ClientContext* context, ::grpc::testing::Request* request, ::grpc::experimental::ClientReadReactor< ::grpc::testing::Response>* reactor) override;
 | 
	
		
			
				|  |  | +      #endif
 | 
	
		
			
				|  |  | +      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      void MethodA4(::grpc::ClientContext* context, ::grpc::ClientBidiReactor< ::grpc::testing::Request,::grpc::testing::Response>* reactor) override;
 | 
	
		
			
				|  |  | +      #else
 | 
	
		
			
				|  |  |        void MethodA4(::grpc::ClientContext* context, ::grpc::experimental::ClientBidiReactor< ::grpc::testing::Request,::grpc::testing::Response>* reactor) override;
 | 
	
		
			
				|  |  | +      #endif
 | 
	
		
			
				|  |  |       private:
 | 
	
		
			
				|  |  |        friend class Stub;
 | 
	
		
			
				|  |  |        explicit experimental_async(Stub* stub): stub_(stub) { }
 | 
	
	
		
			
				|  | @@ -325,13 +372,28 @@ class ServiceA final {
 | 
	
		
			
				|  |  |      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
 | 
	
		
			
				|  |  |     public:
 | 
	
		
			
				|  |  |      ExperimentalWithCallbackMethod_MethodA1() {
 | 
	
		
			
				|  |  | -      ::grpc::Service::experimental().MarkMethodCallback(0,
 | 
	
		
			
				|  |  | -        new ::grpc_impl::internal::CallbackUnaryHandler< ::grpc::testing::Request, ::grpc::testing::Response>(
 | 
	
		
			
				|  |  | -          [this](::grpc::experimental::CallbackServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response) { return this->MethodA1(context, request, response); }));}
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      ::grpc::Service::
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +      ::grpc::Service::experimental().
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +        MarkMethodCallback(0,
 | 
	
		
			
				|  |  | +          new ::grpc_impl::internal::CallbackUnaryHandler< ::grpc::testing::Request, ::grpc::testing::Response>(
 | 
	
		
			
				|  |  | +            [this](
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +                   ::grpc::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +                   ::grpc::experimental::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +                     context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response) { return this->MethodA1(context, request, response); }));}
 | 
	
		
			
				|  |  |      void SetMessageAllocatorFor_MethodA1(
 | 
	
		
			
				|  |  |          ::grpc::experimental::MessageAllocator< ::grpc::testing::Request, ::grpc::testing::Response>* allocator) {
 | 
	
		
			
				|  |  | -      static_cast<::grpc_impl::internal::CallbackUnaryHandler< ::grpc::testing::Request, ::grpc::testing::Response>*>(
 | 
	
		
			
				|  |  | -          ::grpc::Service::experimental().GetHandler(0))
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(0);
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::experimental().GetHandler(0);
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +      static_cast<::grpc_impl::internal::CallbackUnaryHandler< ::grpc::testing::Request, ::grpc::testing::Response>*>(handler)
 | 
	
		
			
				|  |  |                ->SetMessageAllocator(allocator);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      ~ExperimentalWithCallbackMethod_MethodA1() override {
 | 
	
	
		
			
				|  | @@ -342,7 +404,14 @@ class ServiceA final {
 | 
	
		
			
				|  |  |        abort();
 | 
	
		
			
				|  |  |        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    virtual ::grpc::experimental::ServerUnaryReactor* MethodA1(::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/) { return nullptr; }
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +    virtual ::grpc::ServerUnaryReactor* MethodA1(
 | 
	
		
			
				|  |  | +      ::grpc::CallbackServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/)
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +    virtual ::grpc::experimental::ServerUnaryReactor* MethodA1(
 | 
	
		
			
				|  |  | +      ::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/)
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +      { return nullptr; }
 | 
	
		
			
				|  |  |    };
 | 
	
		
			
				|  |  |    template <class BaseClass>
 | 
	
		
			
				|  |  |    class ExperimentalWithCallbackMethod_MethodA2 : public BaseClass {
 | 
	
	
		
			
				|  | @@ -350,9 +419,20 @@ class ServiceA final {
 | 
	
		
			
				|  |  |      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
 | 
	
		
			
				|  |  |     public:
 | 
	
		
			
				|  |  |      ExperimentalWithCallbackMethod_MethodA2() {
 | 
	
		
			
				|  |  | -      ::grpc::Service::experimental().MarkMethodCallback(1,
 | 
	
		
			
				|  |  | -        new ::grpc_impl::internal::CallbackClientStreamingHandler< ::grpc::testing::Request, ::grpc::testing::Response>(
 | 
	
		
			
				|  |  | -          [this](::grpc::experimental::CallbackServerContext* context, ::grpc::testing::Response* response) { return this->MethodA2(context, response); }));
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      ::grpc::Service::
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +      ::grpc::Service::experimental().
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +        MarkMethodCallback(1,
 | 
	
		
			
				|  |  | +          new ::grpc_impl::internal::CallbackClientStreamingHandler< ::grpc::testing::Request, ::grpc::testing::Response>(
 | 
	
		
			
				|  |  | +            [this](
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +                   ::grpc::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +                   ::grpc::experimental::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +                     context, ::grpc::testing::Response* response) { return this->MethodA2(context, response); }));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      ~ExperimentalWithCallbackMethod_MethodA2() override {
 | 
	
		
			
				|  |  |        BaseClassMustBeDerivedFromService(this);
 | 
	
	
		
			
				|  | @@ -362,7 +442,14 @@ class ServiceA final {
 | 
	
		
			
				|  |  |        abort();
 | 
	
		
			
				|  |  |        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    virtual ::grpc::experimental::ServerReadReactor< ::grpc::testing::Request>* MethodA2(::grpc::experimental::CallbackServerContext* /*context*/, ::grpc::testing::Response* /*response*/) { return nullptr; }
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +    virtual ::grpc::ServerReadReactor< ::grpc::testing::Request>* MethodA2(
 | 
	
		
			
				|  |  | +      ::grpc::CallbackServerContext* /*context*/, ::grpc::testing::Response* /*response*/)
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +    virtual ::grpc::experimental::ServerReadReactor< ::grpc::testing::Request>* MethodA2(
 | 
	
		
			
				|  |  | +      ::grpc::experimental::CallbackServerContext* /*context*/, ::grpc::testing::Response* /*response*/)
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +      { return nullptr; }
 | 
	
		
			
				|  |  |    };
 | 
	
		
			
				|  |  |    template <class BaseClass>
 | 
	
		
			
				|  |  |    class ExperimentalWithCallbackMethod_MethodA3 : public BaseClass {
 | 
	
	
		
			
				|  | @@ -370,9 +457,20 @@ class ServiceA final {
 | 
	
		
			
				|  |  |      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
 | 
	
		
			
				|  |  |     public:
 | 
	
		
			
				|  |  |      ExperimentalWithCallbackMethod_MethodA3() {
 | 
	
		
			
				|  |  | -      ::grpc::Service::experimental().MarkMethodCallback(2,
 | 
	
		
			
				|  |  | -        new ::grpc_impl::internal::CallbackServerStreamingHandler< ::grpc::testing::Request, ::grpc::testing::Response>(
 | 
	
		
			
				|  |  | -          [this](::grpc::experimental::CallbackServerContext* context, const ::grpc::testing::Request* request) { return this->MethodA3(context, request); }));
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      ::grpc::Service::
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +      ::grpc::Service::experimental().
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +        MarkMethodCallback(2,
 | 
	
		
			
				|  |  | +          new ::grpc_impl::internal::CallbackServerStreamingHandler< ::grpc::testing::Request, ::grpc::testing::Response>(
 | 
	
		
			
				|  |  | +            [this](
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +                   ::grpc::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +                   ::grpc::experimental::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +                     context, const ::grpc::testing::Request* request) { return this->MethodA3(context, request); }));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      ~ExperimentalWithCallbackMethod_MethodA3() override {
 | 
	
		
			
				|  |  |        BaseClassMustBeDerivedFromService(this);
 | 
	
	
		
			
				|  | @@ -382,7 +480,14 @@ class ServiceA final {
 | 
	
		
			
				|  |  |        abort();
 | 
	
		
			
				|  |  |        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    virtual ::grpc::experimental::ServerWriteReactor< ::grpc::testing::Response>* MethodA3(::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::testing::Request* /*request*/) { return nullptr; }
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +    virtual ::grpc::ServerWriteReactor< ::grpc::testing::Response>* MethodA3(
 | 
	
		
			
				|  |  | +      ::grpc::CallbackServerContext* /*context*/, const ::grpc::testing::Request* /*request*/)
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +    virtual ::grpc::experimental::ServerWriteReactor< ::grpc::testing::Response>* MethodA3(
 | 
	
		
			
				|  |  | +      ::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::testing::Request* /*request*/)
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +      { return nullptr; }
 | 
	
		
			
				|  |  |    };
 | 
	
		
			
				|  |  |    template <class BaseClass>
 | 
	
		
			
				|  |  |    class ExperimentalWithCallbackMethod_MethodA4 : public BaseClass {
 | 
	
	
		
			
				|  | @@ -390,9 +495,20 @@ class ServiceA final {
 | 
	
		
			
				|  |  |      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
 | 
	
		
			
				|  |  |     public:
 | 
	
		
			
				|  |  |      ExperimentalWithCallbackMethod_MethodA4() {
 | 
	
		
			
				|  |  | -      ::grpc::Service::experimental().MarkMethodCallback(3,
 | 
	
		
			
				|  |  | -        new ::grpc_impl::internal::CallbackBidiHandler< ::grpc::testing::Request, ::grpc::testing::Response>(
 | 
	
		
			
				|  |  | -          [this](::grpc::experimental::CallbackServerContext* context) { return this->MethodA4(context); }));
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      ::grpc::Service::
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +      ::grpc::Service::experimental().
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +        MarkMethodCallback(3,
 | 
	
		
			
				|  |  | +          new ::grpc_impl::internal::CallbackBidiHandler< ::grpc::testing::Request, ::grpc::testing::Response>(
 | 
	
		
			
				|  |  | +            [this](
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +                   ::grpc::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +                   ::grpc::experimental::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +                     context) { return this->MethodA4(context); }));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      ~ExperimentalWithCallbackMethod_MethodA4() override {
 | 
	
		
			
				|  |  |        BaseClassMustBeDerivedFromService(this);
 | 
	
	
		
			
				|  | @@ -402,8 +518,19 @@ class ServiceA final {
 | 
	
		
			
				|  |  |        abort();
 | 
	
		
			
				|  |  |        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    virtual ::grpc::experimental::ServerBidiReactor< ::grpc::testing::Request, ::grpc::testing::Response>* MethodA4(::grpc::experimental::CallbackServerContext* /*context*/) { return nullptr; }
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +    virtual ::grpc::ServerBidiReactor< ::grpc::testing::Request, ::grpc::testing::Response>* MethodA4(
 | 
	
		
			
				|  |  | +      ::grpc::CallbackServerContext* /*context*/)
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +    virtual ::grpc::experimental::ServerBidiReactor< ::grpc::testing::Request, ::grpc::testing::Response>* MethodA4(
 | 
	
		
			
				|  |  | +      ::grpc::experimental::CallbackServerContext* /*context*/)
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +      { return nullptr; }
 | 
	
		
			
				|  |  |    };
 | 
	
		
			
				|  |  | +  #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +  typedef ExperimentalWithCallbackMethod_MethodA1<ExperimentalWithCallbackMethod_MethodA2<ExperimentalWithCallbackMethod_MethodA3<ExperimentalWithCallbackMethod_MethodA4<Service > > > > CallbackService;
 | 
	
		
			
				|  |  | +  #endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    typedef ExperimentalWithCallbackMethod_MethodA1<ExperimentalWithCallbackMethod_MethodA2<ExperimentalWithCallbackMethod_MethodA3<ExperimentalWithCallbackMethod_MethodA4<Service > > > > ExperimentalCallbackService;
 | 
	
		
			
				|  |  |    template <class BaseClass>
 | 
	
		
			
				|  |  |    class WithGenericMethod_MethodA1 : public BaseClass {
 | 
	
	
		
			
				|  | @@ -559,9 +686,20 @@ class ServiceA final {
 | 
	
		
			
				|  |  |      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
 | 
	
		
			
				|  |  |     public:
 | 
	
		
			
				|  |  |      ExperimentalWithRawCallbackMethod_MethodA1() {
 | 
	
		
			
				|  |  | -      ::grpc::Service::experimental().MarkMethodRawCallback(0,
 | 
	
		
			
				|  |  | -        new ::grpc_impl::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
 | 
	
		
			
				|  |  | -          [this](::grpc::experimental::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->MethodA1(context, request, response); }));
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      ::grpc::Service::
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +      ::grpc::Service::experimental().
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +        MarkMethodRawCallback(0,
 | 
	
		
			
				|  |  | +          new ::grpc_impl::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
 | 
	
		
			
				|  |  | +            [this](
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +                   ::grpc::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +                   ::grpc::experimental::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +                     context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->MethodA1(context, request, response); }));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      ~ExperimentalWithRawCallbackMethod_MethodA1() override {
 | 
	
		
			
				|  |  |        BaseClassMustBeDerivedFromService(this);
 | 
	
	
		
			
				|  | @@ -571,7 +709,14 @@ class ServiceA final {
 | 
	
		
			
				|  |  |        abort();
 | 
	
		
			
				|  |  |        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    virtual ::grpc::experimental::ServerUnaryReactor* MethodA1(::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/) { return nullptr; }
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +    virtual ::grpc::ServerUnaryReactor* MethodA1(
 | 
	
		
			
				|  |  | +      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +    virtual ::grpc::experimental::ServerUnaryReactor* MethodA1(
 | 
	
		
			
				|  |  | +      ::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +      { return nullptr; }
 | 
	
		
			
				|  |  |    };
 | 
	
		
			
				|  |  |    template <class BaseClass>
 | 
	
		
			
				|  |  |    class ExperimentalWithRawCallbackMethod_MethodA2 : public BaseClass {
 | 
	
	
		
			
				|  | @@ -579,9 +724,20 @@ class ServiceA final {
 | 
	
		
			
				|  |  |      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
 | 
	
		
			
				|  |  |     public:
 | 
	
		
			
				|  |  |      ExperimentalWithRawCallbackMethod_MethodA2() {
 | 
	
		
			
				|  |  | -      ::grpc::Service::experimental().MarkMethodRawCallback(1,
 | 
	
		
			
				|  |  | -        new ::grpc_impl::internal::CallbackClientStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
 | 
	
		
			
				|  |  | -          [this](::grpc::experimental::CallbackServerContext* context, ::grpc::ByteBuffer* response) { return this->MethodA2(context, response); }));
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      ::grpc::Service::
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +      ::grpc::Service::experimental().
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +        MarkMethodRawCallback(1,
 | 
	
		
			
				|  |  | +          new ::grpc_impl::internal::CallbackClientStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
 | 
	
		
			
				|  |  | +            [this](
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +                   ::grpc::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +                   ::grpc::experimental::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +                     context, ::grpc::ByteBuffer* response) { return this->MethodA2(context, response); }));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      ~ExperimentalWithRawCallbackMethod_MethodA2() override {
 | 
	
		
			
				|  |  |        BaseClassMustBeDerivedFromService(this);
 | 
	
	
		
			
				|  | @@ -591,7 +747,14 @@ class ServiceA final {
 | 
	
		
			
				|  |  |        abort();
 | 
	
		
			
				|  |  |        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    virtual ::grpc::experimental::ServerReadReactor< ::grpc::ByteBuffer>* MethodA2(::grpc::experimental::CallbackServerContext* /*context*/, ::grpc::ByteBuffer* /*response*/) { return nullptr; }
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +    virtual ::grpc::ServerReadReactor< ::grpc::ByteBuffer>* MethodA2(
 | 
	
		
			
				|  |  | +      ::grpc::CallbackServerContext* /*context*/, ::grpc::ByteBuffer* /*response*/)
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +    virtual ::grpc::experimental::ServerReadReactor< ::grpc::ByteBuffer>* MethodA2(
 | 
	
		
			
				|  |  | +      ::grpc::experimental::CallbackServerContext* /*context*/, ::grpc::ByteBuffer* /*response*/)
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +      { return nullptr; }
 | 
	
		
			
				|  |  |    };
 | 
	
		
			
				|  |  |    template <class BaseClass>
 | 
	
		
			
				|  |  |    class ExperimentalWithRawCallbackMethod_MethodA3 : public BaseClass {
 | 
	
	
		
			
				|  | @@ -599,9 +762,20 @@ class ServiceA final {
 | 
	
		
			
				|  |  |      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
 | 
	
		
			
				|  |  |     public:
 | 
	
		
			
				|  |  |      ExperimentalWithRawCallbackMethod_MethodA3() {
 | 
	
		
			
				|  |  | -      ::grpc::Service::experimental().MarkMethodRawCallback(2,
 | 
	
		
			
				|  |  | -        new ::grpc_impl::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
 | 
	
		
			
				|  |  | -          [this](::grpc::experimental::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->MethodA3(context, request); }));
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      ::grpc::Service::
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +      ::grpc::Service::experimental().
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +        MarkMethodRawCallback(2,
 | 
	
		
			
				|  |  | +          new ::grpc_impl::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
 | 
	
		
			
				|  |  | +            [this](
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +                   ::grpc::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +                   ::grpc::experimental::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +                     context, const::grpc::ByteBuffer* request) { return this->MethodA3(context, request); }));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      ~ExperimentalWithRawCallbackMethod_MethodA3() override {
 | 
	
		
			
				|  |  |        BaseClassMustBeDerivedFromService(this);
 | 
	
	
		
			
				|  | @@ -611,7 +785,14 @@ class ServiceA final {
 | 
	
		
			
				|  |  |        abort();
 | 
	
		
			
				|  |  |        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    virtual ::grpc::experimental::ServerWriteReactor< ::grpc::ByteBuffer>* MethodA3(::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/) { return nullptr; }
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* MethodA3(
 | 
	
		
			
				|  |  | +      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +    virtual ::grpc::experimental::ServerWriteReactor< ::grpc::ByteBuffer>* MethodA3(
 | 
	
		
			
				|  |  | +      ::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +      { return nullptr; }
 | 
	
		
			
				|  |  |    };
 | 
	
		
			
				|  |  |    template <class BaseClass>
 | 
	
		
			
				|  |  |    class ExperimentalWithRawCallbackMethod_MethodA4 : public BaseClass {
 | 
	
	
		
			
				|  | @@ -619,9 +800,20 @@ class ServiceA final {
 | 
	
		
			
				|  |  |      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
 | 
	
		
			
				|  |  |     public:
 | 
	
		
			
				|  |  |      ExperimentalWithRawCallbackMethod_MethodA4() {
 | 
	
		
			
				|  |  | -      ::grpc::Service::experimental().MarkMethodRawCallback(3,
 | 
	
		
			
				|  |  | -        new ::grpc_impl::internal::CallbackBidiHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
 | 
	
		
			
				|  |  | -          [this](::grpc::experimental::CallbackServerContext* context) { return this->MethodA4(context); }));
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      ::grpc::Service::
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +      ::grpc::Service::experimental().
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +        MarkMethodRawCallback(3,
 | 
	
		
			
				|  |  | +          new ::grpc_impl::internal::CallbackBidiHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
 | 
	
		
			
				|  |  | +            [this](
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +                   ::grpc::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +                   ::grpc::experimental::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +                     context) { return this->MethodA4(context); }));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      ~ExperimentalWithRawCallbackMethod_MethodA4() override {
 | 
	
		
			
				|  |  |        BaseClassMustBeDerivedFromService(this);
 | 
	
	
		
			
				|  | @@ -631,7 +823,14 @@ class ServiceA final {
 | 
	
		
			
				|  |  |        abort();
 | 
	
		
			
				|  |  |        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    virtual ::grpc::experimental::ServerBidiReactor< ::grpc::ByteBuffer, ::grpc::ByteBuffer>* MethodA4(::grpc::experimental::CallbackServerContext* /*context*/) { return nullptr; }
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +    virtual ::grpc::ServerBidiReactor< ::grpc::ByteBuffer, ::grpc::ByteBuffer>* MethodA4(
 | 
	
		
			
				|  |  | +      ::grpc::CallbackServerContext* /*context*/)
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +    virtual ::grpc::experimental::ServerBidiReactor< ::grpc::ByteBuffer, ::grpc::ByteBuffer>* MethodA4(
 | 
	
		
			
				|  |  | +      ::grpc::experimental::CallbackServerContext* /*context*/)
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +      { return nullptr; }
 | 
	
		
			
				|  |  |    };
 | 
	
		
			
				|  |  |    template <class BaseClass>
 | 
	
		
			
				|  |  |    class WithStreamedUnaryMethod_MethodA1 : public BaseClass {
 | 
	
	
		
			
				|  | @@ -702,10 +901,24 @@ class ServiceB final {
 | 
	
		
			
				|  |  |        // MethodB1 leading comment 1
 | 
	
		
			
				|  |  |        virtual void MethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, std::function<void(::grpc::Status)>) = 0;
 | 
	
		
			
				|  |  |        virtual void MethodB1(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::grpc::testing::Response* response, std::function<void(::grpc::Status)>) = 0;
 | 
	
		
			
				|  |  | +      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      virtual void MethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, ::grpc::ClientUnaryReactor* reactor) = 0;
 | 
	
		
			
				|  |  | +      #else
 | 
	
		
			
				|  |  |        virtual void MethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0;
 | 
	
		
			
				|  |  | +      #endif
 | 
	
		
			
				|  |  | +      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      virtual void MethodB1(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::grpc::testing::Response* response, ::grpc::ClientUnaryReactor* reactor) = 0;
 | 
	
		
			
				|  |  | +      #else
 | 
	
		
			
				|  |  |        virtual void MethodB1(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::grpc::testing::Response* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0;
 | 
	
		
			
				|  |  | +      #endif
 | 
	
		
			
				|  |  |        // MethodB1 trailing comment 1
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +    typedef class experimental_async_interface async_interface;
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +    async_interface* async() { return experimental_async(); }
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  |      virtual class experimental_async_interface* experimental_async() { return nullptr; }
 | 
	
		
			
				|  |  |    private:
 | 
	
		
			
				|  |  |      virtual ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>* AsyncMethodB1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) = 0;
 | 
	
	
		
			
				|  | @@ -726,8 +939,16 @@ class ServiceB final {
 | 
	
		
			
				|  |  |       public:
 | 
	
		
			
				|  |  |        void MethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, std::function<void(::grpc::Status)>) override;
 | 
	
		
			
				|  |  |        void MethodB1(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::grpc::testing::Response* response, std::function<void(::grpc::Status)>) override;
 | 
	
		
			
				|  |  | +      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      void MethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, ::grpc::ClientUnaryReactor* reactor) override;
 | 
	
		
			
				|  |  | +      #else
 | 
	
		
			
				|  |  |        void MethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, ::grpc::experimental::ClientUnaryReactor* reactor) override;
 | 
	
		
			
				|  |  | +      #endif
 | 
	
		
			
				|  |  | +      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      void MethodB1(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::grpc::testing::Response* response, ::grpc::ClientUnaryReactor* reactor) override;
 | 
	
		
			
				|  |  | +      #else
 | 
	
		
			
				|  |  |        void MethodB1(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::grpc::testing::Response* response, ::grpc::experimental::ClientUnaryReactor* reactor) override;
 | 
	
		
			
				|  |  | +      #endif
 | 
	
		
			
				|  |  |       private:
 | 
	
		
			
				|  |  |        friend class Stub;
 | 
	
		
			
				|  |  |        explicit experimental_async(Stub* stub): stub_(stub) { }
 | 
	
	
		
			
				|  | @@ -780,13 +1001,28 @@ class ServiceB final {
 | 
	
		
			
				|  |  |      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
 | 
	
		
			
				|  |  |     public:
 | 
	
		
			
				|  |  |      ExperimentalWithCallbackMethod_MethodB1() {
 | 
	
		
			
				|  |  | -      ::grpc::Service::experimental().MarkMethodCallback(0,
 | 
	
		
			
				|  |  | -        new ::grpc_impl::internal::CallbackUnaryHandler< ::grpc::testing::Request, ::grpc::testing::Response>(
 | 
	
		
			
				|  |  | -          [this](::grpc::experimental::CallbackServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response) { return this->MethodB1(context, request, response); }));}
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      ::grpc::Service::
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +      ::grpc::Service::experimental().
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +        MarkMethodCallback(0,
 | 
	
		
			
				|  |  | +          new ::grpc_impl::internal::CallbackUnaryHandler< ::grpc::testing::Request, ::grpc::testing::Response>(
 | 
	
		
			
				|  |  | +            [this](
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +                   ::grpc::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +                   ::grpc::experimental::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +                     context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response) { return this->MethodB1(context, request, response); }));}
 | 
	
		
			
				|  |  |      void SetMessageAllocatorFor_MethodB1(
 | 
	
		
			
				|  |  |          ::grpc::experimental::MessageAllocator< ::grpc::testing::Request, ::grpc::testing::Response>* allocator) {
 | 
	
		
			
				|  |  | -      static_cast<::grpc_impl::internal::CallbackUnaryHandler< ::grpc::testing::Request, ::grpc::testing::Response>*>(
 | 
	
		
			
				|  |  | -          ::grpc::Service::experimental().GetHandler(0))
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(0);
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::experimental().GetHandler(0);
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +      static_cast<::grpc_impl::internal::CallbackUnaryHandler< ::grpc::testing::Request, ::grpc::testing::Response>*>(handler)
 | 
	
		
			
				|  |  |                ->SetMessageAllocator(allocator);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      ~ExperimentalWithCallbackMethod_MethodB1() override {
 | 
	
	
		
			
				|  | @@ -797,8 +1033,19 @@ class ServiceB final {
 | 
	
		
			
				|  |  |        abort();
 | 
	
		
			
				|  |  |        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    virtual ::grpc::experimental::ServerUnaryReactor* MethodB1(::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/) { return nullptr; }
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +    virtual ::grpc::ServerUnaryReactor* MethodB1(
 | 
	
		
			
				|  |  | +      ::grpc::CallbackServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/)
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +    virtual ::grpc::experimental::ServerUnaryReactor* MethodB1(
 | 
	
		
			
				|  |  | +      ::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/)
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +      { return nullptr; }
 | 
	
		
			
				|  |  |    };
 | 
	
		
			
				|  |  | +  #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +  typedef ExperimentalWithCallbackMethod_MethodB1<Service > CallbackService;
 | 
	
		
			
				|  |  | +  #endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    typedef ExperimentalWithCallbackMethod_MethodB1<Service > ExperimentalCallbackService;
 | 
	
		
			
				|  |  |    template <class BaseClass>
 | 
	
		
			
				|  |  |    class WithGenericMethod_MethodB1 : public BaseClass {
 | 
	
	
		
			
				|  | @@ -843,9 +1090,20 @@ class ServiceB final {
 | 
	
		
			
				|  |  |      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
 | 
	
		
			
				|  |  |     public:
 | 
	
		
			
				|  |  |      ExperimentalWithRawCallbackMethod_MethodB1() {
 | 
	
		
			
				|  |  | -      ::grpc::Service::experimental().MarkMethodRawCallback(0,
 | 
	
		
			
				|  |  | -        new ::grpc_impl::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
 | 
	
		
			
				|  |  | -          [this](::grpc::experimental::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->MethodB1(context, request, response); }));
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +      ::grpc::Service::
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +      ::grpc::Service::experimental().
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +        MarkMethodRawCallback(0,
 | 
	
		
			
				|  |  | +          new ::grpc_impl::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
 | 
	
		
			
				|  |  | +            [this](
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +                   ::grpc::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +                   ::grpc::experimental::CallbackServerContext*
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +                     context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->MethodB1(context, request, response); }));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      ~ExperimentalWithRawCallbackMethod_MethodB1() override {
 | 
	
		
			
				|  |  |        BaseClassMustBeDerivedFromService(this);
 | 
	
	
		
			
				|  | @@ -855,7 +1113,14 @@ class ServiceB final {
 | 
	
		
			
				|  |  |        abort();
 | 
	
		
			
				|  |  |        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    virtual ::grpc::experimental::ServerUnaryReactor* MethodB1(::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/) { return nullptr; }
 | 
	
		
			
				|  |  | +    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
 | 
	
		
			
				|  |  | +    virtual ::grpc::ServerUnaryReactor* MethodB1(
 | 
	
		
			
				|  |  | +      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)
 | 
	
		
			
				|  |  | +    #else
 | 
	
		
			
				|  |  | +    virtual ::grpc::experimental::ServerUnaryReactor* MethodB1(
 | 
	
		
			
				|  |  | +      ::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)
 | 
	
		
			
				|  |  | +    #endif
 | 
	
		
			
				|  |  | +      { return nullptr; }
 | 
	
		
			
				|  |  |    };
 | 
	
		
			
				|  |  |    template <class BaseClass>
 | 
	
		
			
				|  |  |    class WithStreamedUnaryMethod_MethodB1 : public BaseClass {
 |