GRPC C++  1.23.0
generic_stub_impl.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2015 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 #ifndef GRPCPP_GENERIC_GENERIC_STUB_IMPL_H
20 #define GRPCPP_GENERIC_GENERIC_STUB_IMPL_H
21 
22 #include <functional>
23 
24 #include <grpcpp/client_context.h>
29 #include <grpcpp/support/status.h>
30 
31 #include <functional>
32 
33 namespace grpc {
34 
35 typedef ::grpc_impl::ClientAsyncReaderWriter<ByteBuffer, ByteBuffer>
37 typedef ::grpc_impl::ClientAsyncResponseReader<ByteBuffer>
39 } // namespace grpc
40 namespace grpc_impl {
41 class CompletionQueue;
42 
45 class GenericStub final {
46  public:
47  explicit GenericStub(std::shared_ptr<grpc::ChannelInterface> channel)
48  : channel_(channel) {}
49 
54  std::unique_ptr<grpc::GenericClientAsyncReaderWriter> PrepareCall(
55  grpc::ClientContext* context, const grpc::string& method,
56  CompletionQueue* cq);
57 
62  std::unique_ptr<grpc::GenericClientAsyncResponseReader> PrepareUnaryCall(
63  grpc_impl::ClientContext* context, const grpc::string& method,
64  const grpc::ByteBuffer& request, CompletionQueue* cq);
65 
72  std::unique_ptr<grpc::GenericClientAsyncReaderWriter> Call(
73  grpc_impl::ClientContext* context, const grpc::string& method,
74  CompletionQueue* cq, void* tag);
75 
80  public:
81  explicit experimental_type(GenericStub* stub) : stub_(stub) {}
82 
85  void UnaryCall(grpc_impl::ClientContext* context,
86  const grpc::string& method, const grpc::ByteBuffer* request,
87  grpc::ByteBuffer* response,
88  std::function<void(grpc::Status)> on_completion);
89 
92  void UnaryCall(grpc_impl::ClientContext* context,
93  const grpc::string& method, const grpc::ByteBuffer* request,
94  grpc::ByteBuffer* response,
96 
100  void PrepareBidiStreamingCall(
101  grpc_impl::ClientContext* context, const grpc::string& method,
103  grpc::ByteBuffer>* reactor);
104 
105  private:
106  GenericStub* stub_;
107  };
108 
113 
114  private:
115  std::shared_ptr<grpc::ChannelInterface> channel_;
116 };
117 
118 } // namespace grpc_impl
119 
120 #endif // GRPCPP_GENERIC_GENERIC_STUB_IMPL_H
std::string string
Definition: config.h:35
NOTE: class experimental_type is not part of the public API of this class TODO(vjpai): Move these con...
Definition: generic_stub_impl.h:79
ClientBidiReactor is the interface for a bidirectional streaming RPC.
Definition: client_callback_impl.h:105
ClientUnaryReactor is a reactor-style interface for a unary RPC.
Definition: client_callback_impl.h:383
GenericStub(std::shared_ptr< grpc::ChannelInterface > channel)
Definition: generic_stub_impl.h:47
Generic stubs provide a type-unsafe interface to call gRPC methods by name.
Definition: generic_stub_impl.h:45
::grpc_impl::ClientAsyncReaderWriter< ByteBuffer, ByteBuffer > GenericClientAsyncReaderWriter
Definition: generic_stub_impl.h:36
This header provides an object that reads bytes directly from a grpc::ByteBuffer, via the ZeroCopyInp...
Definition: alarm.h:24
experimental_type(GenericStub *stub)
Definition: generic_stub_impl.h:81
An Alarm posts the user-provided tag to its associated completion queue or invokes the user-provided ...
Definition: alarm_impl.h:33
experimental_type experimental()
NOTE: The function experimental() is not stable public API.
Definition: generic_stub_impl.h:112
A thin wrapper around grpc_completion_queue (see src/core/lib/surface/completion_queue.h).
Definition: completion_queue_impl.h:101
A ClientContext allows the person implementing a service client to:
Definition: client_context_impl.h:180
Did it work? If it didn&#39;t, why?
Definition: status.h:31
::grpc_impl::ClientAsyncResponseReader< ByteBuffer > GenericClientAsyncResponseReader
Definition: generic_stub_impl.h:38
A sequence of bytes.
Definition: byte_buffer.h:72