grpcpp/impl/codegen/sync_stream.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2019 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 #ifndef GRPCPP_IMPL_CODEGEN_SYNC_STREAM_H
19 #define GRPCPP_IMPL_CODEGEN_SYNC_STREAM_H
20 
21 // IWYU pragma: private, include <grpcpp/support/sync_stream.h>
22 
31 
32 namespace grpc {
33 
34 namespace internal {
37  public:
39 
64  virtual grpc::Status Finish() = 0;
65 };
66 
69  public:
71 
78  virtual void SendInitialMetadata() = 0;
79 };
80 
82 template <class R>
84  public:
85  virtual ~ReaderInterface() {}
86 
89  virtual bool NextMessageSize(uint32_t* sz) = 0;
90 
101  virtual bool Read(R* msg) = 0;
102 };
103 
105 template <class W>
107  public:
108  virtual ~WriterInterface() {}
109 
117  virtual bool Write(const W& msg, grpc::WriteOptions options) = 0;
118 
125  inline bool Write(const W& msg) { return Write(msg, grpc::WriteOptions()); }
126 
142  Write(msg, options.set_last_message());
143  }
144 };
145 
146 } // namespace internal
147 
149 template <class R>
151  public internal::ReaderInterface<R> {
152  public:
157  virtual void WaitForInitialMetadata() = 0;
158 };
159 
160 namespace internal {
161 template <class R>
163  public:
164  template <class W>
168  const W& request) {
170  }
171 };
172 } // namespace internal
173 
177 template <class R>
178 class ClientReader final : public ClientReaderInterface<R> {
179  public:
183  // Side effect:
187  void WaitForInitialMetadata() override {
189 
191  ops.RecvInitialMetadata(context_);
192  call_.PerformOps(&ops);
193  cq_.Pluck(&ops);
194  }
195 
196  bool NextMessageSize(uint32_t* sz) override {
198  *sz = (result > 0) ? result : UINT32_MAX;
199  return true;
200  }
201 
207  bool Read(R* msg) override {
210  ops;
212  ops.RecvInitialMetadata(context_);
213  }
214  ops.RecvMessage(msg);
215  call_.PerformOps(&ops);
216  return cq_.Pluck(&ops) && ops.got_message;
217  }
218 
224  grpc::Status Finish() override {
227  ops;
229  ops.RecvInitialMetadata(context_);
230  }
232  ops.ClientRecvStatus(context_, &status);
233  call_.PerformOps(&ops);
235  return status;
236  }
237 
238  private:
243 
247  template <class W>
251  : context_(context),
254  nullptr}), // Pluckable cq
255  call_(channel->CreateCall(method, context, &cq_)) {
259  ops;
260  ops.SendInitialMetadata(&context->send_initial_metadata_,
262  // TODO(ctiller): don't assert
263  GPR_CODEGEN_ASSERT(ops.SendMessagePtr(&request).ok());
264  ops.ClientSendClose();
265  call_.PerformOps(&ops);
266  cq_.Pluck(&ops);
267  }
268 };
269 
271 template <class W>
273  public internal::WriterInterface<W> {
274  public:
281  virtual bool WritesDone() = 0;
282 };
283 
284 namespace internal {
285 template <class W>
287  public:
288  template <class R>
293  }
294 };
295 } // namespace internal
296 
300 template <class W>
301 class ClientWriter : public ClientWriterInterface<W> {
302  public:
306  // Side effect:
311 
313  ops.RecvInitialMetadata(context_);
314  call_.PerformOps(&ops);
315  cq_.Pluck(&ops); // status ignored
316  }
317 
325  bool Write(const W& msg, grpc::WriteOptions options) override {
329  ops;
330 
331  if (options.is_last_message()) {
332  options.set_buffer_hint();
333  ops.ClientSendClose();
334  }
336  ops.SendInitialMetadata(&context_->send_initial_metadata_,
339  }
340  if (!ops.SendMessagePtr(&msg, options).ok()) {
341  return false;
342  }
343 
344  call_.PerformOps(&ops);
345  return cq_.Pluck(&ops);
346  }
347 
348  bool WritesDone() override {
350  ops.ClientSendClose();
351  call_.PerformOps(&ops);
352  return cq_.Pluck(&ops);
353  }
354 
361  grpc::Status Finish() override {
364  finish_ops_.RecvInitialMetadata(context_);
365  }
366  finish_ops_.ClientRecvStatus(context_, &status);
369  return status;
370  }
371 
372  private:
374 
380  template <class R>
384  : context_(context),
387  nullptr}), // Pluckable cq
388  call_(channel->CreateCall(method, context, &cq_)) {
389  finish_ops_.RecvMessage(response);
390  finish_ops_.AllowNoMessage();
391 
394  ops.SendInitialMetadata(&context->send_initial_metadata_,
396  call_.PerformOps(&ops);
397  cq_.Pluck(&ops);
398  }
399  }
400 
408 };
409 
413 template <class W, class R>
415  public internal::WriterInterface<W>,
416  public internal::ReaderInterface<R> {
417  public:
422  virtual void WaitForInitialMetadata() = 0;
423 
430  virtual bool WritesDone() = 0;
431 };
432 
433 namespace internal {
434 template <class W, class R>
436  public:
441  }
442 };
443 } // namespace internal
444 
449 template <class W, class R>
450 class ClientReaderWriter final : public ClientReaderWriterInterface<W, R> {
451  public:
458  void WaitForInitialMetadata() override {
460 
462  ops.RecvInitialMetadata(context_);
463  call_.PerformOps(&ops);
464  cq_.Pluck(&ops); // status ignored
465  }
466 
467  bool NextMessageSize(uint32_t* sz) override {
469  *sz = (result > 0) ? result : UINT32_MAX;
470  return true;
471  }
472 
477  bool Read(R* msg) override {
480  ops;
482  ops.RecvInitialMetadata(context_);
483  }
484  ops.RecvMessage(msg);
485  call_.PerformOps(&ops);
486  return cq_.Pluck(&ops) && ops.got_message;
487  }
488 
495  bool Write(const W& msg, grpc::WriteOptions options) override {
499  ops;
500 
501  if (options.is_last_message()) {
502  options.set_buffer_hint();
503  ops.ClientSendClose();
504  }
506  ops.SendInitialMetadata(&context_->send_initial_metadata_,
509  }
510  if (!ops.SendMessagePtr(&msg, options).ok()) {
511  return false;
512  }
513 
514  call_.PerformOps(&ops);
515  return cq_.Pluck(&ops);
516  }
517 
518  bool WritesDone() override {
520  ops.ClientSendClose();
521  call_.PerformOps(&ops);
522  return cq_.Pluck(&ops);
523  }
524 
530  grpc::Status Finish() override {
533  ops;
535  ops.RecvInitialMetadata(context_);
536  }
538  ops.ClientRecvStatus(context_, &status);
539  call_.PerformOps(&ops);
541  return status;
542  }
543 
544  private:
546 
550 
557  : context_(context),
560  nullptr}), // Pluckable cq
561  call_(channel->CreateCall(method, context, &cq_)) {
564  ops.SendInitialMetadata(&context->send_initial_metadata_,
566  call_.PerformOps(&ops);
567  cq_.Pluck(&ops);
568  }
569  }
570 };
571 
573 template <class R>
575  public internal::ReaderInterface<R> {};
576 
580 template <class R>
581 class ServerReader final : public ServerReaderInterface<R> {
582  public:
586  void SendInitialMetadata() override {
588 
590  ops.SendInitialMetadata(&ctx_->initial_metadata_,
592  if (ctx_->compression_level_set()) {
593  ops.set_compression_level(ctx_->compression_level());
594  }
596  call_->PerformOps(&ops);
597  call_->cq()->Pluck(&ops);
598  }
599 
600  bool NextMessageSize(uint32_t* sz) override {
602  *sz = (result > 0) ? result : UINT32_MAX;
603  return true;
604  }
605 
606  bool Read(R* msg) override {
608  ops.RecvMessage(msg);
609  call_->PerformOps(&ops);
610  bool ok = call_->cq()->Pluck(&ops) && ops.got_message;
611  if (!ok) {
613  }
614  return ok;
615  }
616 
617  private:
620 
621  template <class ServiceType, class RequestType, class ResponseType>
623 
625  : call_(call), ctx_(ctx) {}
626 };
627 
629 template <class W>
631  public internal::WriterInterface<W> {};
632 
636 template <class W>
637 class ServerWriter final : public ServerWriterInterface<W> {
638  public:
643  void SendInitialMetadata() override {
645 
647  ops.SendInitialMetadata(&ctx_->initial_metadata_,
649  if (ctx_->compression_level_set()) {
650  ops.set_compression_level(ctx_->compression_level());
651  }
653  call_->PerformOps(&ops);
654  call_->cq()->Pluck(&ops);
655  }
656 
663  bool Write(const W& msg, grpc::WriteOptions options) override {
664  if (options.is_last_message()) {
665  options.set_buffer_hint();
666  }
667 
668  if (!ctx_->pending_ops_.SendMessagePtr(&msg, options).ok()) {
669  return false;
670  }
672  ctx_->pending_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
674  if (ctx_->compression_level_set()) {
675  ctx_->pending_ops_.set_compression_level(ctx_->compression_level());
676  }
678  }
680  // if this is the last message we defer the pluck until AFTER we start
681  // the trailing md op. This prevents hangs. See
682  // https://github.com/grpc/grpc/issues/11546
683  if (options.is_last_message()) {
684  ctx_->has_pending_ops_ = true;
685  return true;
686  }
687  ctx_->has_pending_ops_ = false;
688  return call_->cq()->Pluck(&ctx_->pending_ops_);
689  }
690 
691  private:
694 
695  template <class ServiceType, class RequestType, class ResponseType>
697 
699  : call_(call), ctx_(ctx) {}
700 };
701 
703 template <class W, class R>
705  public internal::WriterInterface<W>,
706  public internal::ReaderInterface<R> {};
707 
709 namespace internal {
710 template <class W, class R>
711 class ServerReaderWriterBody final {
712  public:
714  : call_(call), ctx_(ctx) {}
715 
718 
720  ops.SendInitialMetadata(&ctx_->initial_metadata_,
722  if (ctx_->compression_level_set()) {
723  ops.set_compression_level(ctx_->compression_level());
724  }
726  call_->PerformOps(&ops);
727  call_->cq()->Pluck(&ops);
728  }
729 
732  *sz = (result > 0) ? result : UINT32_MAX;
733  return true;
734  }
735 
736  bool Read(R* msg) {
738  ops.RecvMessage(msg);
739  call_->PerformOps(&ops);
740  bool ok = call_->cq()->Pluck(&ops) && ops.got_message;
741  if (!ok) {
743  }
744  return ok;
745  }
746 
748  if (options.is_last_message()) {
749  options.set_buffer_hint();
750  }
751  if (!ctx_->pending_ops_.SendMessagePtr(&msg, options).ok()) {
752  return false;
753  }
755  ctx_->pending_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
757  if (ctx_->compression_level_set()) {
758  ctx_->pending_ops_.set_compression_level(ctx_->compression_level());
759  }
761  }
763  // if this is the last message we defer the pluck until AFTER we start
764  // the trailing md op. This prevents hangs. See
765  // https://github.com/grpc/grpc/issues/11546
766  if (options.is_last_message()) {
767  ctx_->has_pending_ops_ = true;
768  return true;
769  }
770  ctx_->has_pending_ops_ = false;
771  return call_->cq()->Pluck(&ctx_->pending_ops_);
772  }
773 
774  private:
777 };
778 
779 } // namespace internal
780 
785 template <class W, class R>
787  public:
791  void SendInitialMetadata() override { body_.SendInitialMetadata(); }
792 
793  bool NextMessageSize(uint32_t* sz) override {
794  return body_.NextMessageSize(sz);
795  }
796 
797  bool Read(R* msg) override { return body_.Read(msg); }
798 
805  bool Write(const W& msg, grpc::WriteOptions options) override {
806  return body_.Write(msg, options);
807  }
808 
809  private:
811 
815  : body_(call, ctx) {}
816 };
817 
826 template <class RequestType, class ResponseType>
828  : public ServerReaderWriterInterface<ResponseType, RequestType> {
829  public:
835 
837  bool NextMessageSize(uint32_t* sz) override {
838  return body_.NextMessageSize(sz);
839  }
840 
851  bool Read(RequestType* request) override {
852  if (read_done_) {
853  return false;
854  }
855  read_done_ = true;
856  return body_.Read(request);
857  }
858 
868  grpc::WriteOptions options) override {
869  if (write_done_ || !read_done_) {
870  return false;
871  }
872  write_done_ = true;
873  return body_.Write(response, options);
874  }
875 
876  private:
880 
885 };
886 
892 template <class RequestType, class ResponseType>
894  : public ServerReaderWriterInterface<ResponseType, RequestType> {
895  public:
901 
903  bool NextMessageSize(uint32_t* sz) override {
904  return body_.NextMessageSize(sz);
905  }
906 
917  bool Read(RequestType* request) override {
918  if (read_done_) {
919  return false;
920  }
921  read_done_ = true;
922  return body_.Read(request);
923  }
924 
934  grpc::WriteOptions options) override {
935  return read_done_ && body_.Write(response, options);
936  }
937 
938  private:
941 
945  : body_(call, ctx), read_done_(false) {}
946 };
947 
948 } // namespace grpc
949 
950 #endif // GRPCPP_IMPL_CODEGEN_SYNC_STREAM_H
grpc::ClientReaderWriter::Read
bool Read(R *msg) override
Definition: grpcpp/impl/codegen/sync_stream.h:477
grpc::ClientReaderInterface
Client-side interface for streaming reads of message of type R.
Definition: grpcpp/impl/codegen/sync_stream.h:150
grpc::ServerContextBase::pending_ops_
grpc::internal::CallOpSet< grpc::internal::CallOpSendInitialMetadata, grpc::internal::CallOpSendMessage > pending_ops_
Definition: grpcpp/impl/codegen/server_context.h:484
grpc::ClientContext::send_initial_metadata_
std::multimap< std::string, std::string > send_initial_metadata_
Definition: grpcpp/impl/codegen/client_context.h:502
grpc::internal::ServerStreamingInterface
Common interface for all synchronous server side streaming.
Definition: grpcpp/impl/codegen/sync_stream.h:68
grpc::internal::CallOpSendMessage
Definition: call_op_set.h:289
_gevent_test_main.result
result
Definition: _gevent_test_main.py:96
grpc::status
auto status
Definition: cpp/client/credentials_test.cc:200
grpc::ClientWriter::WaitForInitialMetadata
void WaitForInitialMetadata()
Definition: grpcpp/impl/codegen/sync_stream.h:309
grpc::ClientReaderWriter::WaitForInitialMetadata
void WaitForInitialMetadata() override
Definition: grpcpp/impl/codegen/sync_stream.h:458
grpc::ServerUnaryStreamer::read_done_
bool read_done_
Definition: grpcpp/impl/codegen/sync_stream.h:878
grpc::internal::WriterInterface
An interface that can be fed a sequence of messages of type W.
Definition: grpcpp/impl/codegen/sync_stream.h:106
grpc::ServerWriter
Definition: include/grpcpp/impl/codegen/completion_queue.h:60
grpc::ServerWriter::call_
grpc::internal::Call *const call_
Definition: grpcpp/impl/codegen/sync_stream.h:692
grpc::ServerReaderWriter::SendInitialMetadata
void SendInitialMetadata() override
Definition: grpcpp/impl/codegen/sync_stream.h:791
grpc._simple_stubs.RequestType
RequestType
Definition: _simple_stubs.py:27
grpc._simple_stubs.ResponseType
ResponseType
Definition: _simple_stubs.py:28
grpc::ServerContext
Definition: grpcpp/impl/codegen/server_context.h:566
grpc::ClientReaderWriter::context_
grpc::ClientContext * context_
Definition: grpcpp/impl/codegen/sync_stream.h:547
ctx
Definition: benchmark-async.c:30
grpc::ServerSplitStreamer::NextMessageSize
bool NextMessageSize(uint32_t *sz) override
Get an upper bound on the request message size from the client.
Definition: grpcpp/impl/codegen/sync_stream.h:903
grpc
Definition: grpcpp/alarm.h:33
false
#define false
Definition: setup_once.h:323
grpc::ClientWriter::ClientWriter
ClientWriter(grpc::ChannelInterface *channel, const grpc::internal::RpcMethod &method, grpc::ClientContext *context, R *response)
Definition: grpcpp/impl/codegen/sync_stream.h:381
grpc::internal::ClientStreamingInterface::Finish
virtual grpc::Status Finish()=0
grpc::internal::ServerReaderWriterBody::Read
bool Read(R *msg)
Definition: grpcpp/impl/codegen/sync_stream.h:736
service_type.h
options
double_dict options[]
Definition: capstone_test.c:55
benchmark.request
request
Definition: benchmark.py:77
grpc::internal::CallOpGenericRecvMessage
Definition: call_op_set.h:533
grpc::internal::ServerReaderWriterBody::ctx_
grpc::ServerContext *const ctx_
Definition: grpcpp/impl/codegen/sync_stream.h:776
grpc::ServerReader::ServerReader
ServerReader(grpc::internal::Call *call, grpc::ServerContext *ctx)
Definition: grpcpp/impl/codegen/sync_stream.h:624
client_context.h
UINT32_MAX
#define UINT32_MAX
Definition: stdint-msvc2008.h:142
grpc::ServerReaderWriter::Write
bool Write(const W &msg, grpc::WriteOptions options) override
Definition: grpcpp/impl/codegen/sync_stream.h:805
grpc::ClientWriterInterface
Client-side interface for streaming writes of message type W.
Definition: grpcpp/impl/codegen/sync_stream.h:272
grpc::ServerReader::SendInitialMetadata
void SendInitialMetadata() override
Definition: grpcpp/impl/codegen/sync_stream.h:586
grpc::ServerReaderWriter
Definition: grpcpp/impl/codegen/sync_stream.h:786
core_codegen_interface.h
grpc::ServerUnaryStreamer::Read
bool Read(RequestType *request) override
Definition: grpcpp/impl/codegen/sync_stream.h:851
grpc::internal::ReaderInterface::NextMessageSize
virtual bool NextMessageSize(uint32_t *sz)=0
grpc::ServerUnaryStreamer
Definition: grpcpp/impl/codegen/sync_stream.h:827
grpc::ServerReader::Read
bool Read(R *msg) override
Definition: grpcpp/impl/codegen/sync_stream.h:606
grpc::ServerSplitStreamer::read_done_
bool read_done_
Definition: grpcpp/impl/codegen/sync_stream.h:940
grpc::ClientReader::NextMessageSize
bool NextMessageSize(uint32_t *sz) override
Definition: grpcpp/impl/codegen/sync_stream.h:196
grpc::ServerWriter::ServerWriter
ServerWriter(grpc::internal::Call *call, grpc::ServerContext *ctx)
Definition: grpcpp/impl/codegen/sync_stream.h:698
grpc::internal::ServerReaderWriterBody::call_
grpc::internal::Call *const call_
Definition: grpcpp/impl/codegen/sync_stream.h:775
grpc::ServerUnaryStreamer::NextMessageSize
bool NextMessageSize(uint32_t *sz) override
Get an upper bound on the request message size from the client.
Definition: grpcpp/impl/codegen/sync_stream.h:837
grpc::ClientWriterInterface::WritesDone
virtual bool WritesDone()=0
true
#define true
Definition: setup_once.h:324
grpc::ClientReader::WaitForInitialMetadata
void WaitForInitialMetadata() override
Definition: grpcpp/impl/codegen/sync_stream.h:187
call
FilterStackCall * call
Definition: call.cc:750
grpc::ServerSplitStreamer::ServerSplitStreamer
ServerSplitStreamer(grpc::internal::Call *call, grpc::ServerContext *ctx)
Definition: grpcpp/impl/codegen/sync_stream.h:944
grpc::ServerContextBase::MaybeMarkCancelledOnRead
void MaybeMarkCancelledOnRead()
Definition: grpcpp/impl/codegen/server_context.h:444
grpc::internal::ServerReaderWriterBody::ServerReaderWriterBody
ServerReaderWriterBody(grpc::internal::Call *call, grpc::ServerContext *ctx)
Definition: grpcpp/impl/codegen/sync_stream.h:713
grpc::WriteOptions
Per-message write options.
Definition: call_op_set.h:81
grpc::CompletionQueue::Pluck
bool Pluck(grpc::internal::CompletionQueueTag *tag)
Definition: include/grpcpp/impl/codegen/completion_queue.h:324
grpc::internal::ReaderInterface::Read
virtual bool Read(R *msg)=0
uint32_t
unsigned int uint32_t
Definition: stdint-msvc2008.h:80
grpc::internal::ServerReaderWriterBody::NextMessageSize
bool NextMessageSize(uint32_t *sz)
Definition: grpcpp/impl/codegen/sync_stream.h:730
grpc::ClientReaderWriter::WritesDone
bool WritesDone() override
Definition: grpcpp/impl/codegen/sync_stream.h:518
grpc::ClientContext::set_initial_metadata_corked
void set_initial_metadata_corked(bool corked)
Definition: grpcpp/impl/codegen/client_context.h:357
grpc::internal::CallOpClientRecvStatus
Definition: call_op_set.h:776
grpc::internal::ServerReaderWriterBody::SendInitialMetadata
void SendInitialMetadata()
Definition: grpcpp/impl/codegen/sync_stream.h:716
grpc::ChannelInterface
Codegen interface for grpc::Channel.
Definition: grpcpp/impl/codegen/channel_interface.h:73
W
#define W
Definition: zlib/crc32.c:85
grpc::ClientReaderWriter
Definition: grpcpp/impl/codegen/channel_interface.h:35
channel
wrapped_grpc_channel * channel
Definition: src/php/ext/grpc/call.h:33
GRPC_CQ_DEFAULT_POLLING
@ GRPC_CQ_DEFAULT_POLLING
Definition: grpc_types.h:743
grpc::ServerContextBase::initial_metadata_flags
uint32_t initial_metadata_flags() const
Definition: grpcpp/impl/codegen/server_context.h:427
grpc::internal::RpcMethod
Descriptor of an RPC method.
Definition: grpcpp/impl/codegen/rpc_method.h:31
grpc::ClientReader::Finish
grpc::Status Finish() override
Definition: grpcpp/impl/codegen/sync_stream.h:224
grpc::ServerSplitStreamer
Definition: grpcpp/impl/codegen/sync_stream.h:893
grpc::ServerReader::NextMessageSize
bool NextMessageSize(uint32_t *sz) override
Definition: grpcpp/impl/codegen/sync_stream.h:600
grpc::internal::ReaderInterface
An interface that yields a sequence of messages of type R.
Definition: grpcpp/impl/codegen/sync_stream.h:83
grpc::internal::ServerReaderWriterBody
Definition: include/grpcpp/impl/codegen/completion_queue.h:63
grpc::internal::Call::max_receive_message_size
int max_receive_message_size() const
Definition: include/grpcpp/impl/codegen/call.h:74
grpc::ServerReaderWriter::NextMessageSize
bool NextMessageSize(uint32_t *sz) override
Definition: grpcpp/impl/codegen/sync_stream.h:793
grpc::ServerContextBase::initial_metadata_
std::multimap< std::string, std::string > initial_metadata_
Definition: grpcpp/impl/codegen/server_context.h:475
grpc::internal::Call::PerformOps
void PerformOps(CallOpSetInterface *ops)
Definition: include/grpcpp/impl/codegen/call.h:67
grpc::ServerContextBase::has_pending_ops_
bool has_pending_ops_
Definition: grpcpp/impl/codegen/server_context.h:485
grpc::internal::ReaderInterface::~ReaderInterface
virtual ~ReaderInterface()
Definition: grpcpp/impl/codegen/sync_stream.h:85
grpc::ServerUnaryStreamer::body_
internal::ServerReaderWriterBody< ResponseType, RequestType > body_
Definition: grpcpp/impl/codegen/sync_stream.h:877
grpc::internal::ServerStreamingInterface::~ServerStreamingInterface
virtual ~ServerStreamingInterface()
Definition: grpcpp/impl/codegen/sync_stream.h:70
grpc::internal::ClientReaderFactory
Definition: grpcpp/impl/codegen/sync_stream.h:162
grpc::internal::WriterInterface::~WriterInterface
virtual ~WriterInterface()
Definition: grpcpp/impl/codegen/sync_stream.h:108
completion_queue.h
grpc::ClientReaderInterface::WaitForInitialMetadata
virtual void WaitForInitialMetadata()=0
grpc::ServerSplitStreamer::SendInitialMetadata
void SendInitialMetadata() override
Definition: grpcpp/impl/codegen/sync_stream.h:900
grpc::ClientWriter
Definition: grpcpp/impl/codegen/channel_interface.h:33
grpc::internal::ClientReaderFactory::Create
static ClientReader< R > * Create(grpc::ChannelInterface *channel, const grpc::internal::RpcMethod &method, grpc::ClientContext *context, const W &request)
Definition: grpcpp/impl/codegen/sync_stream.h:165
grpc::ClientReaderWriter::Finish
grpc::Status Finish() override
Definition: grpcpp/impl/codegen/sync_stream.h:530
grpc::ClientContext::initial_metadata_received_
bool initial_metadata_received_
Definition: grpcpp/impl/codegen/client_context.h:490
grpc::ServerReaderWriterInterface
Server-side interface for bi-directional streaming.
Definition: grpcpp/impl/codegen/sync_stream.h:704
grpc::internal::ServerStreamingInterface::SendInitialMetadata
virtual void SendInitialMetadata()=0
grpc::internal::CallOpRecvMessage
Definition: include/grpcpp/impl/codegen/byte_buffer.h:52
grpc::ServerContext::compression_level
grpc_compression_level compression_level() const
Return the compression algorithm to be used by the server call.
Definition: grpcpp/impl/codegen/server_context.h:236
GRPC_CQ_PLUCK
@ GRPC_CQ_PLUCK
Definition: grpc_types.h:763
grpc::ServerReaderWriter::body_
internal::ServerReaderWriterBody< W, R > body_
Definition: grpcpp/impl/codegen/sync_stream.h:810
grpc::ClientWriter::WritesDone
bool WritesDone() override
Definition: grpcpp/impl/codegen/sync_stream.h:348
grpc::ServerWriter::ctx_
grpc::ServerContext *const ctx_
Definition: grpcpp/impl/codegen/sync_stream.h:693
grpc::ClientWriter::Write
bool Write(const W &msg, grpc::WriteOptions options) override
Definition: grpcpp/impl/codegen/sync_stream.h:325
grpc::ServerSplitStreamer::Write
bool Write(const ResponseType &response, grpc::WriteOptions options) override
Definition: grpcpp/impl/codegen/sync_stream.h:933
grpc::internal::Call
Straightforward wrapping of the C call object.
Definition: include/grpcpp/impl/codegen/call.h:37
grpc_completion_queue_attributes
Definition: grpc_types.h:791
grpc::ClientWriter::Finish
grpc::Status Finish() override
Definition: grpcpp/impl/codegen/sync_stream.h:361
grpc::internal::CallOpSet< grpc::internal::CallOpRecvInitialMetadata >
msg
std::string msg
Definition: client_interceptors_end2end_test.cc:372
grpc::internal::CallOpRecvInitialMetadata
Definition: call_op_set.h:728
grpc::internal::ClientReaderWriterFactory
Definition: grpcpp/impl/codegen/sync_stream.h:435
grpc::ClientContext::initial_metadata_flags
uint32_t initial_metadata_flags() const
Definition: grpcpp/impl/codegen/client_context.h:474
grpc::internal::ClientWriterFactory::Create
static ClientWriter< W > * Create(grpc::ChannelInterface *channel, const grpc::internal::RpcMethod &method, grpc::ClientContext *context, R *response)
Definition: grpcpp/impl/codegen/sync_stream.h:289
grpc::ClientContext
Definition: grpcpp/impl/codegen/client_context.h:195
grpc::ServerUnaryStreamer::write_done_
bool write_done_
Definition: grpcpp/impl/codegen/sync_stream.h:879
grpc::ClientReader::call_
grpc::internal::Call call_
Definition: grpcpp/impl/codegen/sync_stream.h:242
grpc::ClientWriter::cq_
grpc::CompletionQueue cq_
Definition: grpcpp/impl/codegen/sync_stream.h:406
grpc::ServerContextBase::sent_initial_metadata_
bool sent_initial_metadata_
Definition: grpcpp/impl/codegen/server_context.h:472
grpc::internal::WriterInterface::Write
virtual bool Write(const W &msg, grpc::WriteOptions options)=0
grpc::ClientReader::context_
grpc::ClientContext * context_
Definition: grpcpp/impl/codegen/sync_stream.h:240
grpc::ServerUnaryStreamer::Write
bool Write(const ResponseType &response, grpc::WriteOptions options) override
Definition: grpcpp/impl/codegen/sync_stream.h:867
status.h
grpc::internal::WriterInterface::WriteLast
void WriteLast(const W &msg, grpc::WriteOptions options)
Definition: grpcpp/impl/codegen/sync_stream.h:141
grpc::ServerReader::call_
grpc::internal::Call *const call_
Definition: grpcpp/impl/codegen/sync_stream.h:618
grpc::ServerReaderWriter::Read
bool Read(R *msg) override
Definition: grpcpp/impl/codegen/sync_stream.h:797
grpc::internal::CallOpSendInitialMetadata
Definition: call_op_set.h:219
grpc::ClientReaderWriter::call_
grpc::internal::Call call_
Definition: grpcpp/impl/codegen/sync_stream.h:549
grpc::ServerUnaryStreamer::SendInitialMetadata
void SendInitialMetadata() override
Definition: grpcpp/impl/codegen/sync_stream.h:834
channel_interface.h
grpc::ServerUnaryStreamer::ServerUnaryStreamer
ServerUnaryStreamer(grpc::internal::Call *call, grpc::ServerContext *ctx)
Definition: grpcpp/impl/codegen/sync_stream.h:883
GRPC_CQ_CURRENT_VERSION
#define GRPC_CQ_CURRENT_VERSION
Definition: grpc_types.h:789
grpc::internal::ClientReaderWriterFactory::Create
static ClientReaderWriter< W, R > * Create(grpc::ChannelInterface *channel, const grpc::internal::RpcMethod &method, grpc::ClientContext *context)
Definition: grpcpp/impl/codegen/sync_stream.h:437
grpc::ServerReaderInterface
Server-side interface for streaming reads of message of type R.
Definition: grpcpp/impl/codegen/sync_stream.h:574
grpc::ClientReaderWriter::ClientReaderWriter
ClientReaderWriter(grpc::ChannelInterface *channel, const grpc::internal::RpcMethod &method, grpc::ClientContext *context)
Definition: grpcpp/impl/codegen/sync_stream.h:554
grpc::internal::Call::cq
grpc::CompletionQueue * cq() const
Definition: include/grpcpp/impl/codegen/call.h:72
grpc::ClientReaderWriter::NextMessageSize
bool NextMessageSize(uint32_t *sz) override
Definition: grpcpp/impl/codegen/sync_stream.h:467
asyncio_get_stats.response
response
Definition: asyncio_get_stats.py:28
server_context.h
grpc::ClientWriter::context_
grpc::ClientContext * context_
Definition: grpcpp/impl/codegen/sync_stream.h:401
grpc::ClientReaderWriterInterface::WaitForInitialMetadata
virtual void WaitForInitialMetadata()=0
grpc::ServerReader
Definition: include/grpcpp/impl/codegen/completion_queue.h:58
grpc::Status
Definition: include/grpcpp/impl/codegen/status.h:35
ok
bool ok
Definition: async_end2end_test.cc:197
grpc::ClientReader::ClientReader
ClientReader(grpc::ChannelInterface *channel, const grpc::internal::RpcMethod &method, grpc::ClientContext *context, const W &request)
Definition: grpcpp/impl/codegen/sync_stream.h:248
grpc::ClientContext::initial_metadata_corked_
bool initial_metadata_corked_
Definition: grpcpp/impl/codegen/client_context.h:510
grpc::internal::ClientWriterFactory
Definition: grpcpp/impl/codegen/sync_stream.h:286
grpc::ServerWriterInterface
Server-side interface for streaming writes of message of type W.
Definition: grpcpp/impl/codegen/sync_stream.h:630
grpc::internal::CallOpClientSendClose
Definition: call_op_set.h:626
grpc::ClientReaderWriterInterface::WritesDone
virtual bool WritesDone()=0
grpc::ServerSplitStreamer::Read
bool Read(RequestType *request) override
Definition: grpcpp/impl/codegen/sync_stream.h:917
GPR_CODEGEN_ASSERT
#define GPR_CODEGEN_ASSERT(x)
Codegen specific version of GPR_ASSERT.
Definition: grpcpp/impl/codegen/core_codegen_interface.h:151
grpc::ClientReaderWriter::Write
bool Write(const W &msg, grpc::WriteOptions options) override
Definition: grpcpp/impl/codegen/sync_stream.h:495
grpc::internal::ClientStreamingInterface
Common interface for all synchronous client side streaming.
Definition: grpcpp/impl/codegen/sync_stream.h:36
grpc::ClientReader::cq_
grpc::CompletionQueue cq_
Definition: grpcpp/impl/codegen/sync_stream.h:241
internal
Definition: benchmark/test/output_test_helper.cc:20
grpc::ClientWriter::call_
grpc::internal::Call call_
Definition: grpcpp/impl/codegen/sync_stream.h:407
context
grpc::ClientContext context
Definition: istio_echo_server_lib.cc:61
grpc::ServerWriter::SendInitialMetadata
void SendInitialMetadata() override
Definition: grpcpp/impl/codegen/sync_stream.h:643
grpc::ServerReader::ctx_
ServerContext *const ctx_
Definition: grpcpp/impl/codegen/sync_stream.h:619
grpc::internal::ServerReaderWriterBody::Write
bool Write(const W &msg, grpc::WriteOptions options)
Definition: grpcpp/impl/codegen/sync_stream.h:747
grpc::internal::ClientStreamingInterface::~ClientStreamingInterface
virtual ~ClientStreamingInterface()
Definition: grpcpp/impl/codegen/sync_stream.h:38
grpc::CompletionQueue
Definition: include/grpcpp/impl/codegen/completion_queue.h:104
grpc::ClientReaderWriterInterface
Definition: grpcpp/impl/codegen/sync_stream.h:414
grpc::internal::TemplatedBidiStreamingHandler
Definition: include/grpcpp/impl/codegen/completion_queue.h:77
grpc::ServerSplitStreamer::body_
internal::ServerReaderWriterBody< ResponseType, RequestType > body_
Definition: grpcpp/impl/codegen/sync_stream.h:939
grpc::ServerWriter::Write
bool Write(const W &msg, grpc::WriteOptions options) override
Definition: grpcpp/impl/codegen/sync_stream.h:663
method
NSString * method
Definition: ProtoMethod.h:28
grpc::ClientReader::Read
bool Read(R *msg) override
Definition: grpcpp/impl/codegen/sync_stream.h:207
grpc::ClientWriter::finish_ops_
grpc::internal::CallOpSet< grpc::internal::CallOpRecvInitialMetadata, grpc::internal::CallOpGenericRecvMessage, grpc::internal::CallOpClientRecvStatus > finish_ops_
Definition: grpcpp/impl/codegen/sync_stream.h:405
grpc::ServerContext::compression_level_set
bool compression_level_set() const
Definition: grpcpp/impl/codegen/server_context.h:251
ops
static grpc_op ops[6]
Definition: test/core/fling/client.cc:39
grpc::internal::ServerStreamingHandler
A wrapper class of an application provided server streaming handler.
Definition: include/grpcpp/impl/codegen/byte_buffer.h:47
grpc::internal::ClientStreamingHandler
A wrapper class of an application provided client streaming handler.
Definition: include/grpcpp/impl/codegen/completion_queue.h:73
grpc::ClientReaderWriter::cq_
grpc::CompletionQueue cq_
Definition: grpcpp/impl/codegen/sync_stream.h:548
grpc::ClientReader
Definition: grpcpp/impl/codegen/channel_interface.h:31
grpc::internal::WriterInterface::Write
bool Write(const W &msg)
Definition: grpcpp/impl/codegen/sync_stream.h:125
grpc::ServerReaderWriter::ServerReaderWriter
ServerReaderWriter(grpc::internal::Call *call, grpc::ServerContext *ctx)
Definition: grpcpp/impl/codegen/sync_stream.h:814
call.h


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:28