xref: /aosp_15_r20/external/grpc-grpc/test/cpp/codegen/compiler_test_golden (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1// Generated by the gRPC C++ plugin.
2// If you make any local change, they will be lost.
3// source: src/proto/grpc/testing/compiler_test.proto
4// Original file comments:
5// Copyright 2016 gRPC authors.
6//
7// Licensed under the Apache License, Version 2.0 (the "License");
8// you may not use this file except in compliance with the License.
9// You may obtain a copy of the License at
10//
11//     http://www.apache.org/licenses/LICENSE-2.0
12//
13// Unless required by applicable law or agreed to in writing, software
14// distributed under the License is distributed on an "AS IS" BASIS,
15// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16// See the License for the specific language governing permissions and
17// limitations under the License.
18//
19// File detached comment 1
20//
21// File detached comment 2
22//
23// File leading comment 1
24#ifndef GRPC_src_2fproto_2fgrpc_2ftesting_2fcompiler_5ftest_2eproto__INCLUDED
25#define GRPC_src_2fproto_2fgrpc_2ftesting_2fcompiler_5ftest_2eproto__INCLUDED
26
27#include "src/proto/grpc/testing/compiler_test.pb.h"
28
29#include <functional>
30#include <grpcpp/generic/async_generic_service.h>
31#include <grpcpp/support/async_stream.h>
32#include <grpcpp/support/async_unary_call.h>
33#include <grpcpp/support/client_callback.h>
34#include <grpcpp/client_context.h>
35#include <grpcpp/completion_queue.h>
36#include <grpcpp/support/message_allocator.h>
37#include <grpcpp/support/method_handler.h>
38#include <grpcpp/impl/proto_utils.h>
39#include <grpcpp/impl/rpc_method.h>
40#include <grpcpp/support/server_callback.h>
41#include <grpcpp/impl/server_callback_handlers.h>
42#include <grpcpp/server_context.h>
43#include <grpcpp/impl/service_type.h>
44#include <grpcpp/support/status.h>
45#include <grpcpp/support/stub_options.h>
46#include <grpcpp/support/sync_stream.h>
47
48namespace grpc {
49namespace testing {
50
51// ServiceA detached comment 1
52//
53// ServiceA detached comment 2
54//
55// Comments may contain special characters like "^[a-z0-9-]{1,63}$" and $$
56//
57// ServiceA leading comment 1
58class ServiceA final {
59 public:
60  static constexpr char const* service_full_name() {
61    return "grpc.testing.ServiceA";
62  }
63  class StubInterface {
64   public:
65    virtual ~StubInterface() {}
66    // MethodA1 leading comment 1
67    virtual ::grpc::Status MethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::testing::Response* response) = 0;
68    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>> AsyncMethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
69      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>>(AsyncMethodA1Raw(context, request, cq));
70    }
71    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>> PrepareAsyncMethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
72      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>>(PrepareAsyncMethodA1Raw(context, request, cq));
73    }
74    // MethodA1 trailing comment 1
75    // MethodA2 detached leading comment 1
76    //
77    // Method A2 leading comment 1
78    // Method A2 leading comment 2
79    std::unique_ptr< ::grpc::ClientWriterInterface< ::grpc::testing::Request>> MethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response) {
80      return std::unique_ptr< ::grpc::ClientWriterInterface< ::grpc::testing::Request>>(MethodA2Raw(context, response));
81    }
82    std::unique_ptr< ::grpc::ClientAsyncWriterInterface< ::grpc::testing::Request>> AsyncMethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::CompletionQueue* cq, void* tag) {
83      return std::unique_ptr< ::grpc::ClientAsyncWriterInterface< ::grpc::testing::Request>>(AsyncMethodA2Raw(context, response, cq, tag));
84    }
85    std::unique_ptr< ::grpc::ClientAsyncWriterInterface< ::grpc::testing::Request>> PrepareAsyncMethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::CompletionQueue* cq) {
86      return std::unique_ptr< ::grpc::ClientAsyncWriterInterface< ::grpc::testing::Request>>(PrepareAsyncMethodA2Raw(context, response, cq));
87    }
88    // MethodA2 trailing comment 1
89    // Method A3 leading comment 1
90    std::unique_ptr< ::grpc::ClientReaderInterface< ::grpc::testing::Response>> MethodA3(::grpc::ClientContext* context, const ::grpc::testing::Request& request) {
91      return std::unique_ptr< ::grpc::ClientReaderInterface< ::grpc::testing::Response>>(MethodA3Raw(context, request));
92    }
93    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::grpc::testing::Response>> AsyncMethodA3(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq, void* tag) {
94      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::grpc::testing::Response>>(AsyncMethodA3Raw(context, request, cq, tag));
95    }
96    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::grpc::testing::Response>> PrepareAsyncMethodA3(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
97      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::grpc::testing::Response>>(PrepareAsyncMethodA3Raw(context, request, cq));
98    }
99    // Method A3 trailing comment 1
100    // Method A4 leading comment 1
101    std::unique_ptr< ::grpc::ClientReaderWriterInterface< ::grpc::testing::Request, ::grpc::testing::Response>> MethodA4(::grpc::ClientContext* context) {
102      return std::unique_ptr< ::grpc::ClientReaderWriterInterface< ::grpc::testing::Request, ::grpc::testing::Response>>(MethodA4Raw(context));
103    }
104    std::unique_ptr< ::grpc::ClientAsyncReaderWriterInterface< ::grpc::testing::Request, ::grpc::testing::Response>> AsyncMethodA4(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) {
105      return std::unique_ptr< ::grpc::ClientAsyncReaderWriterInterface< ::grpc::testing::Request, ::grpc::testing::Response>>(AsyncMethodA4Raw(context, cq, tag));
106    }
107    std::unique_ptr< ::grpc::ClientAsyncReaderWriterInterface< ::grpc::testing::Request, ::grpc::testing::Response>> PrepareAsyncMethodA4(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) {
108      return std::unique_ptr< ::grpc::ClientAsyncReaderWriterInterface< ::grpc::testing::Request, ::grpc::testing::Response>>(PrepareAsyncMethodA4Raw(context, cq));
109    }
110    // Method A4 trailing comment 1
111    class async_interface {
112     public:
113      virtual ~async_interface() {}
114      // MethodA1 leading comment 1
115      virtual void MethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, std::function<void(::grpc::Status)>) = 0;
116      virtual void MethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, ::grpc::ClientUnaryReactor* reactor) = 0;
117      // MethodA1 trailing comment 1
118      // MethodA2 detached leading comment 1
119      //
120      // Method A2 leading comment 1
121      // Method A2 leading comment 2
122      virtual void MethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::ClientWriteReactor< ::grpc::testing::Request>* reactor) = 0;
123      // MethodA2 trailing comment 1
124      // Method A3 leading comment 1
125      virtual void MethodA3(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::ClientReadReactor< ::grpc::testing::Response>* reactor) = 0;
126      // Method A3 trailing comment 1
127      // Method A4 leading comment 1
128      virtual void MethodA4(::grpc::ClientContext* context, ::grpc::ClientBidiReactor< ::grpc::testing::Request,::grpc::testing::Response>* reactor) = 0;
129      // Method A4 trailing comment 1
130    };
131    typedef class async_interface experimental_async_interface;
132    virtual class async_interface* async() { return nullptr; }
133    class async_interface* experimental_async() { return async(); }
134   private:
135    virtual ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>* AsyncMethodA1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) = 0;
136    virtual ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>* PrepareAsyncMethodA1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) = 0;
137    virtual ::grpc::ClientWriterInterface< ::grpc::testing::Request>* MethodA2Raw(::grpc::ClientContext* context, ::grpc::testing::Response* response) = 0;
138    virtual ::grpc::ClientAsyncWriterInterface< ::grpc::testing::Request>* AsyncMethodA2Raw(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::CompletionQueue* cq, void* tag) = 0;
139    virtual ::grpc::ClientAsyncWriterInterface< ::grpc::testing::Request>* PrepareAsyncMethodA2Raw(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::CompletionQueue* cq) = 0;
140    virtual ::grpc::ClientReaderInterface< ::grpc::testing::Response>* MethodA3Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request) = 0;
141    virtual ::grpc::ClientAsyncReaderInterface< ::grpc::testing::Response>* AsyncMethodA3Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
142    virtual ::grpc::ClientAsyncReaderInterface< ::grpc::testing::Response>* PrepareAsyncMethodA3Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) = 0;
143    virtual ::grpc::ClientReaderWriterInterface< ::grpc::testing::Request, ::grpc::testing::Response>* MethodA4Raw(::grpc::ClientContext* context) = 0;
144    virtual ::grpc::ClientAsyncReaderWriterInterface< ::grpc::testing::Request, ::grpc::testing::Response>* AsyncMethodA4Raw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) = 0;
145    virtual ::grpc::ClientAsyncReaderWriterInterface< ::grpc::testing::Request, ::grpc::testing::Response>* PrepareAsyncMethodA4Raw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) = 0;
146  };
147  class Stub final : public StubInterface {
148   public:
149    Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
150    ::grpc::Status MethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::testing::Response* response) override;
151    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>> AsyncMethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
152      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>>(AsyncMethodA1Raw(context, request, cq));
153    }
154    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>> PrepareAsyncMethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
155      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>>(PrepareAsyncMethodA1Raw(context, request, cq));
156    }
157    std::unique_ptr< ::grpc::ClientWriter< ::grpc::testing::Request>> MethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response) {
158      return std::unique_ptr< ::grpc::ClientWriter< ::grpc::testing::Request>>(MethodA2Raw(context, response));
159    }
160    std::unique_ptr< ::grpc::ClientAsyncWriter< ::grpc::testing::Request>> AsyncMethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::CompletionQueue* cq, void* tag) {
161      return std::unique_ptr< ::grpc::ClientAsyncWriter< ::grpc::testing::Request>>(AsyncMethodA2Raw(context, response, cq, tag));
162    }
163    std::unique_ptr< ::grpc::ClientAsyncWriter< ::grpc::testing::Request>> PrepareAsyncMethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::CompletionQueue* cq) {
164      return std::unique_ptr< ::grpc::ClientAsyncWriter< ::grpc::testing::Request>>(PrepareAsyncMethodA2Raw(context, response, cq));
165    }
166    std::unique_ptr< ::grpc::ClientReader< ::grpc::testing::Response>> MethodA3(::grpc::ClientContext* context, const ::grpc::testing::Request& request) {
167      return std::unique_ptr< ::grpc::ClientReader< ::grpc::testing::Response>>(MethodA3Raw(context, request));
168    }
169    std::unique_ptr< ::grpc::ClientAsyncReader< ::grpc::testing::Response>> AsyncMethodA3(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq, void* tag) {
170      return std::unique_ptr< ::grpc::ClientAsyncReader< ::grpc::testing::Response>>(AsyncMethodA3Raw(context, request, cq, tag));
171    }
172    std::unique_ptr< ::grpc::ClientAsyncReader< ::grpc::testing::Response>> PrepareAsyncMethodA3(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
173      return std::unique_ptr< ::grpc::ClientAsyncReader< ::grpc::testing::Response>>(PrepareAsyncMethodA3Raw(context, request, cq));
174    }
175    std::unique_ptr< ::grpc::ClientReaderWriter< ::grpc::testing::Request, ::grpc::testing::Response>> MethodA4(::grpc::ClientContext* context) {
176      return std::unique_ptr< ::grpc::ClientReaderWriter< ::grpc::testing::Request, ::grpc::testing::Response>>(MethodA4Raw(context));
177    }
178    std::unique_ptr<  ::grpc::ClientAsyncReaderWriter< ::grpc::testing::Request, ::grpc::testing::Response>> AsyncMethodA4(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) {
179      return std::unique_ptr< ::grpc::ClientAsyncReaderWriter< ::grpc::testing::Request, ::grpc::testing::Response>>(AsyncMethodA4Raw(context, cq, tag));
180    }
181    std::unique_ptr<  ::grpc::ClientAsyncReaderWriter< ::grpc::testing::Request, ::grpc::testing::Response>> PrepareAsyncMethodA4(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) {
182      return std::unique_ptr< ::grpc::ClientAsyncReaderWriter< ::grpc::testing::Request, ::grpc::testing::Response>>(PrepareAsyncMethodA4Raw(context, cq));
183    }
184    class async final :
185      public StubInterface::async_interface {
186     public:
187      void MethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, std::function<void(::grpc::Status)>) override;
188      void MethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, ::grpc::ClientUnaryReactor* reactor) override;
189      void MethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::ClientWriteReactor< ::grpc::testing::Request>* reactor) override;
190      void MethodA3(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::ClientReadReactor< ::grpc::testing::Response>* reactor) override;
191      void MethodA4(::grpc::ClientContext* context, ::grpc::ClientBidiReactor< ::grpc::testing::Request,::grpc::testing::Response>* reactor) override;
192     private:
193      friend class Stub;
194      explicit async(Stub* stub): stub_(stub) { }
195      Stub* stub() { return stub_; }
196      Stub* stub_;
197    };
198    class async* async() override { return &async_stub_; }
199
200   private:
201    std::shared_ptr< ::grpc::ChannelInterface> channel_;
202    class async async_stub_{this};
203    ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>* AsyncMethodA1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) override;
204    ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>* PrepareAsyncMethodA1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) override;
205    ::grpc::ClientWriter< ::grpc::testing::Request>* MethodA2Raw(::grpc::ClientContext* context, ::grpc::testing::Response* response) override;
206    ::grpc::ClientAsyncWriter< ::grpc::testing::Request>* AsyncMethodA2Raw(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::CompletionQueue* cq, void* tag) override;
207    ::grpc::ClientAsyncWriter< ::grpc::testing::Request>* PrepareAsyncMethodA2Raw(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::CompletionQueue* cq) override;
208    ::grpc::ClientReader< ::grpc::testing::Response>* MethodA3Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request) override;
209    ::grpc::ClientAsyncReader< ::grpc::testing::Response>* AsyncMethodA3Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq, void* tag) override;
210    ::grpc::ClientAsyncReader< ::grpc::testing::Response>* PrepareAsyncMethodA3Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) override;
211    ::grpc::ClientReaderWriter< ::grpc::testing::Request, ::grpc::testing::Response>* MethodA4Raw(::grpc::ClientContext* context) override;
212    ::grpc::ClientAsyncReaderWriter< ::grpc::testing::Request, ::grpc::testing::Response>* AsyncMethodA4Raw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) override;
213    ::grpc::ClientAsyncReaderWriter< ::grpc::testing::Request, ::grpc::testing::Response>* PrepareAsyncMethodA4Raw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) override;
214    const ::grpc::internal::RpcMethod rpcmethod_MethodA1_;
215    const ::grpc::internal::RpcMethod rpcmethod_MethodA2_;
216    const ::grpc::internal::RpcMethod rpcmethod_MethodA3_;
217    const ::grpc::internal::RpcMethod rpcmethod_MethodA4_;
218  };
219  static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
220
221  class Service : public ::grpc::Service {
222   public:
223    Service();
224    virtual ~Service();
225    // MethodA1 leading comment 1
226    virtual ::grpc::Status MethodA1(::grpc::ServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response);
227    // MethodA1 trailing comment 1
228    // MethodA2 detached leading comment 1
229    //
230    // Method A2 leading comment 1
231    // Method A2 leading comment 2
232    virtual ::grpc::Status MethodA2(::grpc::ServerContext* context, ::grpc::ServerReader< ::grpc::testing::Request>* reader, ::grpc::testing::Response* response);
233    // MethodA2 trailing comment 1
234    // Method A3 leading comment 1
235    virtual ::grpc::Status MethodA3(::grpc::ServerContext* context, const ::grpc::testing::Request* request, ::grpc::ServerWriter< ::grpc::testing::Response>* writer);
236    // Method A3 trailing comment 1
237    // Method A4 leading comment 1
238    virtual ::grpc::Status MethodA4(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::grpc::testing::Response, ::grpc::testing::Request>* stream);
239    // Method A4 trailing comment 1
240  };
241  template <class BaseClass>
242  class WithAsyncMethod_MethodA1 : public BaseClass {
243   private:
244    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
245   public:
246    WithAsyncMethod_MethodA1() {
247      ::grpc::Service::MarkMethodAsync(0);
248    }
249    ~WithAsyncMethod_MethodA1() override {
250      BaseClassMustBeDerivedFromService(this);
251    }
252    // disable synchronous version of this method
253    ::grpc::Status MethodA1(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/) override {
254      abort();
255      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
256    }
257    void RequestMethodA1(::grpc::ServerContext* context, ::grpc::testing::Request* request, ::grpc::ServerAsyncResponseWriter< ::grpc::testing::Response>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
258      ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
259    }
260  };
261  template <class BaseClass>
262  class WithAsyncMethod_MethodA2 : public BaseClass {
263   private:
264    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
265   public:
266    WithAsyncMethod_MethodA2() {
267      ::grpc::Service::MarkMethodAsync(1);
268    }
269    ~WithAsyncMethod_MethodA2() override {
270      BaseClassMustBeDerivedFromService(this);
271    }
272    // disable synchronous version of this method
273    ::grpc::Status MethodA2(::grpc::ServerContext* /*context*/, ::grpc::ServerReader< ::grpc::testing::Request>* /*reader*/, ::grpc::testing::Response* /*response*/) override {
274      abort();
275      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
276    }
277    void RequestMethodA2(::grpc::ServerContext* context, ::grpc::ServerAsyncReader< ::grpc::testing::Response, ::grpc::testing::Request>* reader, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
278      ::grpc::Service::RequestAsyncClientStreaming(1, context, reader, new_call_cq, notification_cq, tag);
279    }
280  };
281  template <class BaseClass>
282  class WithAsyncMethod_MethodA3 : public BaseClass {
283   private:
284    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
285   public:
286    WithAsyncMethod_MethodA3() {
287      ::grpc::Service::MarkMethodAsync(2);
288    }
289    ~WithAsyncMethod_MethodA3() override {
290      BaseClassMustBeDerivedFromService(this);
291    }
292    // disable synchronous version of this method
293    ::grpc::Status MethodA3(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::ServerWriter< ::grpc::testing::Response>* /*writer*/) override {
294      abort();
295      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
296    }
297    void RequestMethodA3(::grpc::ServerContext* context, ::grpc::testing::Request* request, ::grpc::ServerAsyncWriter< ::grpc::testing::Response>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
298      ::grpc::Service::RequestAsyncServerStreaming(2, context, request, writer, new_call_cq, notification_cq, tag);
299    }
300  };
301  template <class BaseClass>
302  class WithAsyncMethod_MethodA4 : public BaseClass {
303   private:
304    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
305   public:
306    WithAsyncMethod_MethodA4() {
307      ::grpc::Service::MarkMethodAsync(3);
308    }
309    ~WithAsyncMethod_MethodA4() override {
310      BaseClassMustBeDerivedFromService(this);
311    }
312    // disable synchronous version of this method
313    ::grpc::Status MethodA4(::grpc::ServerContext* /*context*/, ::grpc::ServerReaderWriter< ::grpc::testing::Response, ::grpc::testing::Request>* /*stream*/)  override {
314      abort();
315      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
316    }
317    void RequestMethodA4(::grpc::ServerContext* context, ::grpc::ServerAsyncReaderWriter< ::grpc::testing::Response, ::grpc::testing::Request>* stream, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
318      ::grpc::Service::RequestAsyncBidiStreaming(3, context, stream, new_call_cq, notification_cq, tag);
319    }
320  };
321  typedef WithAsyncMethod_MethodA1<WithAsyncMethod_MethodA2<WithAsyncMethod_MethodA3<WithAsyncMethod_MethodA4<Service > > > > AsyncService;
322  template <class BaseClass>
323  class WithCallbackMethod_MethodA1 : public BaseClass {
324   private:
325    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
326   public:
327    WithCallbackMethod_MethodA1() {
328      ::grpc::Service::MarkMethodCallback(0,
329          new ::grpc::internal::CallbackUnaryHandler< ::grpc::testing::Request, ::grpc::testing::Response>(
330            [this](
331                   ::grpc::CallbackServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response) { return this->MethodA1(context, request, response); }));}
332    void SetMessageAllocatorFor_MethodA1(
333        ::grpc::MessageAllocator< ::grpc::testing::Request, ::grpc::testing::Response>* allocator) {
334      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(0);
335      static_cast<::grpc::internal::CallbackUnaryHandler< ::grpc::testing::Request, ::grpc::testing::Response>*>(handler)
336              ->SetMessageAllocator(allocator);
337    }
338    ~WithCallbackMethod_MethodA1() override {
339      BaseClassMustBeDerivedFromService(this);
340    }
341    // disable synchronous version of this method
342    ::grpc::Status MethodA1(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/) override {
343      abort();
344      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
345    }
346    virtual ::grpc::ServerUnaryReactor* MethodA1(
347      ::grpc::CallbackServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/)  { return nullptr; }
348  };
349  template <class BaseClass>
350  class WithCallbackMethod_MethodA2 : public BaseClass {
351   private:
352    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
353   public:
354    WithCallbackMethod_MethodA2() {
355      ::grpc::Service::MarkMethodCallback(1,
356          new ::grpc::internal::CallbackClientStreamingHandler< ::grpc::testing::Request, ::grpc::testing::Response>(
357            [this](
358                   ::grpc::CallbackServerContext* context, ::grpc::testing::Response* response) { return this->MethodA2(context, response); }));
359    }
360    ~WithCallbackMethod_MethodA2() override {
361      BaseClassMustBeDerivedFromService(this);
362    }
363    // disable synchronous version of this method
364    ::grpc::Status MethodA2(::grpc::ServerContext* /*context*/, ::grpc::ServerReader< ::grpc::testing::Request>* /*reader*/, ::grpc::testing::Response* /*response*/) override {
365      abort();
366      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
367    }
368    virtual ::grpc::ServerReadReactor< ::grpc::testing::Request>* MethodA2(
369      ::grpc::CallbackServerContext* /*context*/, ::grpc::testing::Response* /*response*/)  { return nullptr; }
370  };
371  template <class BaseClass>
372  class WithCallbackMethod_MethodA3 : public BaseClass {
373   private:
374    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
375   public:
376    WithCallbackMethod_MethodA3() {
377      ::grpc::Service::MarkMethodCallback(2,
378          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::testing::Request, ::grpc::testing::Response>(
379            [this](
380                   ::grpc::CallbackServerContext* context, const ::grpc::testing::Request* request) { return this->MethodA3(context, request); }));
381    }
382    ~WithCallbackMethod_MethodA3() override {
383      BaseClassMustBeDerivedFromService(this);
384    }
385    // disable synchronous version of this method
386    ::grpc::Status MethodA3(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::ServerWriter< ::grpc::testing::Response>* /*writer*/) override {
387      abort();
388      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
389    }
390    virtual ::grpc::ServerWriteReactor< ::grpc::testing::Response>* MethodA3(
391      ::grpc::CallbackServerContext* /*context*/, const ::grpc::testing::Request* /*request*/)  { return nullptr; }
392  };
393  template <class BaseClass>
394  class WithCallbackMethod_MethodA4 : public BaseClass {
395   private:
396    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
397   public:
398    WithCallbackMethod_MethodA4() {
399      ::grpc::Service::MarkMethodCallback(3,
400          new ::grpc::internal::CallbackBidiHandler< ::grpc::testing::Request, ::grpc::testing::Response>(
401            [this](
402                   ::grpc::CallbackServerContext* context) { return this->MethodA4(context); }));
403    }
404    ~WithCallbackMethod_MethodA4() override {
405      BaseClassMustBeDerivedFromService(this);
406    }
407    // disable synchronous version of this method
408    ::grpc::Status MethodA4(::grpc::ServerContext* /*context*/, ::grpc::ServerReaderWriter< ::grpc::testing::Response, ::grpc::testing::Request>* /*stream*/)  override {
409      abort();
410      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
411    }
412    virtual ::grpc::ServerBidiReactor< ::grpc::testing::Request, ::grpc::testing::Response>* MethodA4(
413      ::grpc::CallbackServerContext* /*context*/)
414      { return nullptr; }
415  };
416  typedef WithCallbackMethod_MethodA1<WithCallbackMethod_MethodA2<WithCallbackMethod_MethodA3<WithCallbackMethod_MethodA4<Service > > > > CallbackService;
417  typedef CallbackService ExperimentalCallbackService;
418  template <class BaseClass>
419  class WithGenericMethod_MethodA1 : public BaseClass {
420   private:
421    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
422   public:
423    WithGenericMethod_MethodA1() {
424      ::grpc::Service::MarkMethodGeneric(0);
425    }
426    ~WithGenericMethod_MethodA1() override {
427      BaseClassMustBeDerivedFromService(this);
428    }
429    // disable synchronous version of this method
430    ::grpc::Status MethodA1(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/) override {
431      abort();
432      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
433    }
434  };
435  template <class BaseClass>
436  class WithGenericMethod_MethodA2 : public BaseClass {
437   private:
438    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
439   public:
440    WithGenericMethod_MethodA2() {
441      ::grpc::Service::MarkMethodGeneric(1);
442    }
443    ~WithGenericMethod_MethodA2() override {
444      BaseClassMustBeDerivedFromService(this);
445    }
446    // disable synchronous version of this method
447    ::grpc::Status MethodA2(::grpc::ServerContext* /*context*/, ::grpc::ServerReader< ::grpc::testing::Request>* /*reader*/, ::grpc::testing::Response* /*response*/) override {
448      abort();
449      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
450    }
451  };
452  template <class BaseClass>
453  class WithGenericMethod_MethodA3 : public BaseClass {
454   private:
455    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
456   public:
457    WithGenericMethod_MethodA3() {
458      ::grpc::Service::MarkMethodGeneric(2);
459    }
460    ~WithGenericMethod_MethodA3() override {
461      BaseClassMustBeDerivedFromService(this);
462    }
463    // disable synchronous version of this method
464    ::grpc::Status MethodA3(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::ServerWriter< ::grpc::testing::Response>* /*writer*/) override {
465      abort();
466      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
467    }
468  };
469  template <class BaseClass>
470  class WithGenericMethod_MethodA4 : public BaseClass {
471   private:
472    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
473   public:
474    WithGenericMethod_MethodA4() {
475      ::grpc::Service::MarkMethodGeneric(3);
476    }
477    ~WithGenericMethod_MethodA4() override {
478      BaseClassMustBeDerivedFromService(this);
479    }
480    // disable synchronous version of this method
481    ::grpc::Status MethodA4(::grpc::ServerContext* /*context*/, ::grpc::ServerReaderWriter< ::grpc::testing::Response, ::grpc::testing::Request>* /*stream*/)  override {
482      abort();
483      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
484    }
485  };
486  template <class BaseClass>
487  class WithRawMethod_MethodA1 : public BaseClass {
488   private:
489    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
490   public:
491    WithRawMethod_MethodA1() {
492      ::grpc::Service::MarkMethodRaw(0);
493    }
494    ~WithRawMethod_MethodA1() override {
495      BaseClassMustBeDerivedFromService(this);
496    }
497    // disable synchronous version of this method
498    ::grpc::Status MethodA1(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/) override {
499      abort();
500      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
501    }
502    void RequestMethodA1(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
503      ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
504    }
505  };
506  template <class BaseClass>
507  class WithRawMethod_MethodA2 : public BaseClass {
508   private:
509    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
510   public:
511    WithRawMethod_MethodA2() {
512      ::grpc::Service::MarkMethodRaw(1);
513    }
514    ~WithRawMethod_MethodA2() override {
515      BaseClassMustBeDerivedFromService(this);
516    }
517    // disable synchronous version of this method
518    ::grpc::Status MethodA2(::grpc::ServerContext* /*context*/, ::grpc::ServerReader< ::grpc::testing::Request>* /*reader*/, ::grpc::testing::Response* /*response*/) override {
519      abort();
520      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
521    }
522    void RequestMethodA2(::grpc::ServerContext* context, ::grpc::ServerAsyncReader< ::grpc::ByteBuffer, ::grpc::ByteBuffer>* reader, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
523      ::grpc::Service::RequestAsyncClientStreaming(1, context, reader, new_call_cq, notification_cq, tag);
524    }
525  };
526  template <class BaseClass>
527  class WithRawMethod_MethodA3 : public BaseClass {
528   private:
529    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
530   public:
531    WithRawMethod_MethodA3() {
532      ::grpc::Service::MarkMethodRaw(2);
533    }
534    ~WithRawMethod_MethodA3() override {
535      BaseClassMustBeDerivedFromService(this);
536    }
537    // disable synchronous version of this method
538    ::grpc::Status MethodA3(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::ServerWriter< ::grpc::testing::Response>* /*writer*/) override {
539      abort();
540      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
541    }
542    void RequestMethodA3(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
543      ::grpc::Service::RequestAsyncServerStreaming(2, context, request, writer, new_call_cq, notification_cq, tag);
544    }
545  };
546  template <class BaseClass>
547  class WithRawMethod_MethodA4 : public BaseClass {
548   private:
549    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
550   public:
551    WithRawMethod_MethodA4() {
552      ::grpc::Service::MarkMethodRaw(3);
553    }
554    ~WithRawMethod_MethodA4() override {
555      BaseClassMustBeDerivedFromService(this);
556    }
557    // disable synchronous version of this method
558    ::grpc::Status MethodA4(::grpc::ServerContext* /*context*/, ::grpc::ServerReaderWriter< ::grpc::testing::Response, ::grpc::testing::Request>* /*stream*/)  override {
559      abort();
560      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
561    }
562    void RequestMethodA4(::grpc::ServerContext* context, ::grpc::ServerAsyncReaderWriter< ::grpc::ByteBuffer, ::grpc::ByteBuffer>* stream, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
563      ::grpc::Service::RequestAsyncBidiStreaming(3, context, stream, new_call_cq, notification_cq, tag);
564    }
565  };
566  template <class BaseClass>
567  class WithRawCallbackMethod_MethodA1 : public BaseClass {
568   private:
569    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
570   public:
571    WithRawCallbackMethod_MethodA1() {
572      ::grpc::Service::MarkMethodRawCallback(0,
573          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
574            [this](
575                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->MethodA1(context, request, response); }));
576    }
577    ~WithRawCallbackMethod_MethodA1() override {
578      BaseClassMustBeDerivedFromService(this);
579    }
580    // disable synchronous version of this method
581    ::grpc::Status MethodA1(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/) override {
582      abort();
583      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
584    }
585    virtual ::grpc::ServerUnaryReactor* MethodA1(
586      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
587  };
588  template <class BaseClass>
589  class WithRawCallbackMethod_MethodA2 : public BaseClass {
590   private:
591    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
592   public:
593    WithRawCallbackMethod_MethodA2() {
594      ::grpc::Service::MarkMethodRawCallback(1,
595          new ::grpc::internal::CallbackClientStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
596            [this](
597                   ::grpc::CallbackServerContext* context, ::grpc::ByteBuffer* response) { return this->MethodA2(context, response); }));
598    }
599    ~WithRawCallbackMethod_MethodA2() override {
600      BaseClassMustBeDerivedFromService(this);
601    }
602    // disable synchronous version of this method
603    ::grpc::Status MethodA2(::grpc::ServerContext* /*context*/, ::grpc::ServerReader< ::grpc::testing::Request>* /*reader*/, ::grpc::testing::Response* /*response*/) override {
604      abort();
605      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
606    }
607    virtual ::grpc::ServerReadReactor< ::grpc::ByteBuffer>* MethodA2(
608      ::grpc::CallbackServerContext* /*context*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
609  };
610  template <class BaseClass>
611  class WithRawCallbackMethod_MethodA3 : public BaseClass {
612   private:
613    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
614   public:
615    WithRawCallbackMethod_MethodA3() {
616      ::grpc::Service::MarkMethodRawCallback(2,
617          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
618            [this](
619                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->MethodA3(context, request); }));
620    }
621    ~WithRawCallbackMethod_MethodA3() override {
622      BaseClassMustBeDerivedFromService(this);
623    }
624    // disable synchronous version of this method
625    ::grpc::Status MethodA3(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::ServerWriter< ::grpc::testing::Response>* /*writer*/) override {
626      abort();
627      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
628    }
629    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* MethodA3(
630      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
631  };
632  template <class BaseClass>
633  class WithRawCallbackMethod_MethodA4 : public BaseClass {
634   private:
635    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
636   public:
637    WithRawCallbackMethod_MethodA4() {
638      ::grpc::Service::MarkMethodRawCallback(3,
639          new ::grpc::internal::CallbackBidiHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
640            [this](
641                   ::grpc::CallbackServerContext* context) { return this->MethodA4(context); }));
642    }
643    ~WithRawCallbackMethod_MethodA4() override {
644      BaseClassMustBeDerivedFromService(this);
645    }
646    // disable synchronous version of this method
647    ::grpc::Status MethodA4(::grpc::ServerContext* /*context*/, ::grpc::ServerReaderWriter< ::grpc::testing::Response, ::grpc::testing::Request>* /*stream*/)  override {
648      abort();
649      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
650    }
651    virtual ::grpc::ServerBidiReactor< ::grpc::ByteBuffer, ::grpc::ByteBuffer>* MethodA4(
652      ::grpc::CallbackServerContext* /*context*/)
653      { return nullptr; }
654  };
655  template <class BaseClass>
656  class WithStreamedUnaryMethod_MethodA1 : public BaseClass {
657   private:
658    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
659   public:
660    WithStreamedUnaryMethod_MethodA1() {
661      ::grpc::Service::MarkMethodStreamed(0,
662        new ::grpc::internal::StreamedUnaryHandler<
663          ::grpc::testing::Request, ::grpc::testing::Response>(
664            [this](::grpc::ServerContext* context,
665                   ::grpc::ServerUnaryStreamer<
666                     ::grpc::testing::Request, ::grpc::testing::Response>* streamer) {
667                       return this->StreamedMethodA1(context,
668                         streamer);
669                  }));
670    }
671    ~WithStreamedUnaryMethod_MethodA1() override {
672      BaseClassMustBeDerivedFromService(this);
673    }
674    // disable regular version of this method
675    ::grpc::Status MethodA1(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/) override {
676      abort();
677      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
678    }
679    // replace default version of method with streamed unary
680    virtual ::grpc::Status StreamedMethodA1(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::grpc::testing::Request,::grpc::testing::Response>* server_unary_streamer) = 0;
681  };
682  typedef WithStreamedUnaryMethod_MethodA1<Service > StreamedUnaryService;
683  template <class BaseClass>
684  class WithSplitStreamingMethod_MethodA3 : public BaseClass {
685   private:
686    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
687   public:
688    WithSplitStreamingMethod_MethodA3() {
689      ::grpc::Service::MarkMethodStreamed(2,
690        new ::grpc::internal::SplitServerStreamingHandler<
691          ::grpc::testing::Request, ::grpc::testing::Response>(
692            [this](::grpc::ServerContext* context,
693                   ::grpc::ServerSplitStreamer<
694                     ::grpc::testing::Request, ::grpc::testing::Response>* streamer) {
695                       return this->StreamedMethodA3(context,
696                         streamer);
697                  }));
698    }
699    ~WithSplitStreamingMethod_MethodA3() override {
700      BaseClassMustBeDerivedFromService(this);
701    }
702    // disable regular version of this method
703    ::grpc::Status MethodA3(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::ServerWriter< ::grpc::testing::Response>* /*writer*/) override {
704      abort();
705      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
706    }
707    // replace default version of method with split streamed
708    virtual ::grpc::Status StreamedMethodA3(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::grpc::testing::Request,::grpc::testing::Response>* server_split_streamer) = 0;
709  };
710  typedef WithSplitStreamingMethod_MethodA3<Service > SplitStreamedService;
711  typedef WithStreamedUnaryMethod_MethodA1<WithSplitStreamingMethod_MethodA3<Service > > StreamedService;
712};
713
714// ServiceB leading comment 1
715class ServiceB final {
716 public:
717  static constexpr char const* service_full_name() {
718    return "grpc.testing.ServiceB";
719  }
720  class StubInterface {
721   public:
722    virtual ~StubInterface() {}
723    // MethodB1 leading comment 1
724    virtual ::grpc::Status MethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::testing::Response* response) = 0;
725    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>> AsyncMethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
726      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>>(AsyncMethodB1Raw(context, request, cq));
727    }
728    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>> PrepareAsyncMethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
729      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>>(PrepareAsyncMethodB1Raw(context, request, cq));
730    }
731    // MethodB1 trailing comment 1
732    class async_interface {
733     public:
734      virtual ~async_interface() {}
735      // MethodB1 leading comment 1
736      virtual void MethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, std::function<void(::grpc::Status)>) = 0;
737      virtual void MethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, ::grpc::ClientUnaryReactor* reactor) = 0;
738      // MethodB1 trailing comment 1
739    };
740    typedef class async_interface experimental_async_interface;
741    virtual class async_interface* async() { return nullptr; }
742    class async_interface* experimental_async() { return async(); }
743   private:
744    virtual ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>* AsyncMethodB1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) = 0;
745    virtual ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>* PrepareAsyncMethodB1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) = 0;
746  };
747  class Stub final : public StubInterface {
748   public:
749    Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
750    ::grpc::Status MethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::testing::Response* response) override;
751    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>> AsyncMethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
752      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>>(AsyncMethodB1Raw(context, request, cq));
753    }
754    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>> PrepareAsyncMethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
755      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>>(PrepareAsyncMethodB1Raw(context, request, cq));
756    }
757    class async final :
758      public StubInterface::async_interface {
759     public:
760      void MethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, std::function<void(::grpc::Status)>) override;
761      void MethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response, ::grpc::ClientUnaryReactor* reactor) override;
762     private:
763      friend class Stub;
764      explicit async(Stub* stub): stub_(stub) { }
765      Stub* stub() { return stub_; }
766      Stub* stub_;
767    };
768    class async* async() override { return &async_stub_; }
769
770   private:
771    std::shared_ptr< ::grpc::ChannelInterface> channel_;
772    class async async_stub_{this};
773    ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>* AsyncMethodB1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) override;
774    ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>* PrepareAsyncMethodB1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) override;
775    const ::grpc::internal::RpcMethod rpcmethod_MethodB1_;
776  };
777  static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
778
779  class Service : public ::grpc::Service {
780   public:
781    Service();
782    virtual ~Service();
783    // MethodB1 leading comment 1
784    virtual ::grpc::Status MethodB1(::grpc::ServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response);
785    // MethodB1 trailing comment 1
786  };
787  template <class BaseClass>
788  class WithAsyncMethod_MethodB1 : public BaseClass {
789   private:
790    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
791   public:
792    WithAsyncMethod_MethodB1() {
793      ::grpc::Service::MarkMethodAsync(0);
794    }
795    ~WithAsyncMethod_MethodB1() override {
796      BaseClassMustBeDerivedFromService(this);
797    }
798    // disable synchronous version of this method
799    ::grpc::Status MethodB1(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/) override {
800      abort();
801      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
802    }
803    void RequestMethodB1(::grpc::ServerContext* context, ::grpc::testing::Request* request, ::grpc::ServerAsyncResponseWriter< ::grpc::testing::Response>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
804      ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
805    }
806  };
807  typedef WithAsyncMethod_MethodB1<Service > AsyncService;
808  template <class BaseClass>
809  class WithCallbackMethod_MethodB1 : public BaseClass {
810   private:
811    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
812   public:
813    WithCallbackMethod_MethodB1() {
814      ::grpc::Service::MarkMethodCallback(0,
815          new ::grpc::internal::CallbackUnaryHandler< ::grpc::testing::Request, ::grpc::testing::Response>(
816            [this](
817                   ::grpc::CallbackServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response) { return this->MethodB1(context, request, response); }));}
818    void SetMessageAllocatorFor_MethodB1(
819        ::grpc::MessageAllocator< ::grpc::testing::Request, ::grpc::testing::Response>* allocator) {
820      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(0);
821      static_cast<::grpc::internal::CallbackUnaryHandler< ::grpc::testing::Request, ::grpc::testing::Response>*>(handler)
822              ->SetMessageAllocator(allocator);
823    }
824    ~WithCallbackMethod_MethodB1() override {
825      BaseClassMustBeDerivedFromService(this);
826    }
827    // disable synchronous version of this method
828    ::grpc::Status MethodB1(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/) override {
829      abort();
830      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
831    }
832    virtual ::grpc::ServerUnaryReactor* MethodB1(
833      ::grpc::CallbackServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/)  { return nullptr; }
834  };
835  typedef WithCallbackMethod_MethodB1<Service > CallbackService;
836  typedef CallbackService ExperimentalCallbackService;
837  template <class BaseClass>
838  class WithGenericMethod_MethodB1 : public BaseClass {
839   private:
840    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
841   public:
842    WithGenericMethod_MethodB1() {
843      ::grpc::Service::MarkMethodGeneric(0);
844    }
845    ~WithGenericMethod_MethodB1() override {
846      BaseClassMustBeDerivedFromService(this);
847    }
848    // disable synchronous version of this method
849    ::grpc::Status MethodB1(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/) override {
850      abort();
851      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
852    }
853  };
854  template <class BaseClass>
855  class WithRawMethod_MethodB1 : public BaseClass {
856   private:
857    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
858   public:
859    WithRawMethod_MethodB1() {
860      ::grpc::Service::MarkMethodRaw(0);
861    }
862    ~WithRawMethod_MethodB1() override {
863      BaseClassMustBeDerivedFromService(this);
864    }
865    // disable synchronous version of this method
866    ::grpc::Status MethodB1(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/) override {
867      abort();
868      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
869    }
870    void RequestMethodB1(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
871      ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
872    }
873  };
874  template <class BaseClass>
875  class WithRawCallbackMethod_MethodB1 : public BaseClass {
876   private:
877    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
878   public:
879    WithRawCallbackMethod_MethodB1() {
880      ::grpc::Service::MarkMethodRawCallback(0,
881          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
882            [this](
883                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->MethodB1(context, request, response); }));
884    }
885    ~WithRawCallbackMethod_MethodB1() override {
886      BaseClassMustBeDerivedFromService(this);
887    }
888    // disable synchronous version of this method
889    ::grpc::Status MethodB1(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/) override {
890      abort();
891      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
892    }
893    virtual ::grpc::ServerUnaryReactor* MethodB1(
894      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
895  };
896  template <class BaseClass>
897  class WithStreamedUnaryMethod_MethodB1 : public BaseClass {
898   private:
899    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
900   public:
901    WithStreamedUnaryMethod_MethodB1() {
902      ::grpc::Service::MarkMethodStreamed(0,
903        new ::grpc::internal::StreamedUnaryHandler<
904          ::grpc::testing::Request, ::grpc::testing::Response>(
905            [this](::grpc::ServerContext* context,
906                   ::grpc::ServerUnaryStreamer<
907                     ::grpc::testing::Request, ::grpc::testing::Response>* streamer) {
908                       return this->StreamedMethodB1(context,
909                         streamer);
910                  }));
911    }
912    ~WithStreamedUnaryMethod_MethodB1() override {
913      BaseClassMustBeDerivedFromService(this);
914    }
915    // disable regular version of this method
916    ::grpc::Status MethodB1(::grpc::ServerContext* /*context*/, const ::grpc::testing::Request* /*request*/, ::grpc::testing::Response* /*response*/) override {
917      abort();
918      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
919    }
920    // replace default version of method with streamed unary
921    virtual ::grpc::Status StreamedMethodB1(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::grpc::testing::Request,::grpc::testing::Response>* server_unary_streamer) = 0;
922  };
923  typedef WithStreamedUnaryMethod_MethodB1<Service > StreamedUnaryService;
924  typedef Service SplitStreamedService;
925  typedef WithStreamedUnaryMethod_MethodB1<Service > StreamedService;
926};
927// ServiceB trailing comment 1
928
929}  // namespace testing
930}  // namespace grpc
931
932
933#endif  // GRPC_src_2fproto_2fgrpc_2ftesting_2fcompiler_5ftest_2eproto__INCLUDED
934