34 #ifndef GRPCXX_SUPPORT_SYNC_STREAM_H 
   35 #define GRPCXX_SUPPORT_SYNC_STREAM_H 
   37 #include <grpc/support/log.h> 
   79   virtual bool Read(R* msg) = 0;
 
  123       : context_(context), call_(channel->CreateCall(method, context, &cq_)) {
 
  126     ops.SendInitialMetadata(context->send_initial_metadata_);
 
  128     GPR_ASSERT(ops.SendMessage(request).ok());
 
  135     GPR_ASSERT(!context_->initial_metadata_received_);
 
  138     ops.RecvInitialMetadata(context_);
 
  145     if (!context_->initial_metadata_received_) {
 
  146       ops.RecvInitialMetadata(context_);
 
  148     ops.RecvMessage(msg);
 
  150     return cq_.Pluck(&ops) && ops.got_message;
 
  156     ops.ClientRecvStatus(context_, &status);
 
  158     GPR_ASSERT(cq_.Pluck(&ops));
 
  187       : context_(context), call_(channel->CreateCall(method, context, &cq_)) {
 
  188     finish_ops_.RecvMessage(response);
 
  191     ops.SendInitialMetadata(context->send_initial_metadata_);
 
  199     if (!ops.SendMessage(msg, options).ok()) {
 
  203     return cq_.Pluck(&ops);
 
  208     ops.ClientSendClose();
 
  210     return cq_.Pluck(&ops);
 
  216     finish_ops_.ClientRecvStatus(context_, &status);
 
  218     GPR_ASSERT(cq_.Pluck(&finish_ops_));
 
  230 template <
class W, 
class R>
 
  247 template <
class W, 
class R>
 
  253       : context_(context), call_(channel->CreateCall(method, context, &cq_)) {
 
  255     ops.SendInitialMetadata(context->send_initial_metadata_);
 
  261     GPR_ASSERT(!context_->initial_metadata_received_);
 
  264     ops.RecvInitialMetadata(context_);
 
  271     if (!context_->initial_metadata_received_) {
 
  272       ops.RecvInitialMetadata(context_);
 
  274     ops.RecvMessage(msg);
 
  276     return cq_.Pluck(&ops) && ops.got_message;
 
  282     if (!ops.SendMessage(msg, options).ok()) 
return false;
 
  284     return cq_.Pluck(&ops);
 
  289     ops.ClientSendClose();
 
  291     return cq_.Pluck(&ops);
 
  297     ops.ClientRecvStatus(context_, &status);
 
  299     GPR_ASSERT(cq_.Pluck(&ops));
 
  310 class ServerReader 
GRPC_FINAL : 
public ReaderInterface<R> {
 
  315     GPR_ASSERT(!ctx_->sent_initial_metadata_);
 
  318     ops.SendInitialMetadata(ctx_->initial_metadata_);
 
  319     ctx_->sent_initial_metadata_ = 
true;
 
  321     call_->
cq()->Pluck(&ops);
 
  326     ops.RecvMessage(msg);
 
  328     return call_->
cq()->Pluck(&ops) && ops.got_message;
 
  337 class ServerWriter 
GRPC_FINAL : 
public WriterInterface<W> {
 
  342     GPR_ASSERT(!ctx_->sent_initial_metadata_);
 
  345     ops.SendInitialMetadata(ctx_->initial_metadata_);
 
  346     ctx_->sent_initial_metadata_ = 
true;
 
  348     call_->
cq()->Pluck(&ops);
 
  354     if (!ops.SendMessage(msg, options).ok()) {
 
  357     if (!ctx_->sent_initial_metadata_) {
 
  358       ops.SendInitialMetadata(ctx_->initial_metadata_);
 
  359       ctx_->sent_initial_metadata_ = 
true;
 
  362     return call_->
cq()->Pluck(&ops);
 
  371 template <
class W, 
class R>
 
  372 class ServerReaderWriter 
GRPC_FINAL : 
public WriterInterface<W>,
 
  373                                       public ReaderInterface<R> {
 
  378     GPR_ASSERT(!ctx_->sent_initial_metadata_);
 
  381     ops.SendInitialMetadata(ctx_->initial_metadata_);
 
  382     ctx_->sent_initial_metadata_ = 
true;
 
  384     call_->
cq()->Pluck(&ops);
 
  389     ops.RecvMessage(msg);
 
  391     return call_->
cq()->Pluck(&ops) && ops.got_message;
 
  397     if (!ops.SendMessage(msg, options).ok()) {
 
  400     if (!ctx_->sent_initial_metadata_) {
 
  401       ops.SendInitialMetadata(ctx_->initial_metadata_);
 
  402       ctx_->sent_initial_metadata_ = 
true;
 
  405     return call_->
cq()->Pluck(&ops);
 
  415 #endif  // GRPCXX_SUPPORT_SYNC_STREAM_H 
bool Read(R *msg) GRPC_OVERRIDE
Blocking read a message and parse to msg. 
Definition: sync_stream.h:269
 
Client-side interface for streaming writes of message of type W. 
Definition: sync_stream.h:170
 
ClientReaderWriter(Channel *channel, const RpcMethod &method, ClientContext *context)
Blocking create a stream. 
Definition: sync_stream.h:251
 
virtual void WaitForInitialMetadata()=0
Blocking wait for initial metadata from server. 
 
CompletionQueue * cq()
Definition: call.h:570
 
void SendInitialMetadata()
Definition: sync_stream.h:377
 
Client-side interface for streaming reads of message of type R. 
Definition: sync_stream.h:106
 
void SendInitialMetadata()
Definition: sync_stream.h:341
 
ServerReaderWriter(Call *call, ServerContext *ctx)
Definition: sync_stream.h:375
 
An interface that yields a sequence of messages of type R. 
Definition: sync_stream.h:68
 
void SendInitialMetadata()
Definition: sync_stream.h:314
 
virtual ~ReaderInterface()
Definition: sync_stream.h:70
 
#define GRPC_FINAL
Definition: config.h:71
 
bool Write(const W &msg, const WriteOptions &options) GRPC_OVERRIDE
Blocking write msg to the stream with options. 
Definition: sync_stream.h:352
 
Status Finish() GRPC_OVERRIDE
Wait until the stream finishes, and return the final status. 
Definition: sync_stream.h:153
 
Definition: client_context.h:149
 
Status Finish() GRPC_OVERRIDE
Wait until the stream finishes, and return the final status. 
Definition: sync_stream.h:294
 
ServerReader(Call *call, ServerContext *ctx)
Definition: sync_stream.h:312
 
bool WritesDone() GRPC_OVERRIDE
Half close writing from the client. 
Definition: sync_stream.h:206
 
ClientWriter(Channel *channel, const RpcMethod &method, ClientContext *context, R *response)
Blocking create a stream. 
Definition: sync_stream.h:185
 
bool Write(const W &msg, const WriteOptions &options) GRPC_OVERRIDE
Blocking write msg to the stream with options. 
Definition: sync_stream.h:197
 
virtual ~ClientStreamingInterface()
Definition: sync_stream.h:51
 
bool Read(R *msg) GRPC_OVERRIDE
Blocking read a message and parse to msg. 
Definition: sync_stream.h:387
 
Status Finish() GRPC_OVERRIDE
Read the final response and wait for the final status. 
Definition: sync_stream.h:214
 
bool Read(R *msg) GRPC_OVERRIDE
Blocking read a message and parse to msg. 
Definition: sync_stream.h:143
 
virtual bool WritesDone()=0
Half close writing from the client. 
 
Primary implementaiton of CallOpSetInterface. 
Definition: call.h:502
 
void ClientSendClose()
Definition: call.h:337
 
Definition: server_context.h:89
 
Per-message write options. 
Definition: call.h:64
 
virtual void WaitForInitialMetadata()=0
Blocking wait for initial metadata from server. 
 
virtual bool WritesDone()=0
Block until writes are completed. 
 
bool Write(const W &msg)
Blocking write msg to the stream with default options. 
Definition: sync_stream.h:101
 
A thin wrapper around grpc_completion_queue (see / src/core/surface/completion_queue.h). 
Definition: completion_queue.h:81
 
Definition: rpc_method.h:43
 
virtual Status Finish()=0
Wait until the stream finishes, and return the final status. 
 
bool Write(const W &msg, const WriteOptions &options) GRPC_OVERRIDE
Blocking write msg to the stream with options. 
Definition: sync_stream.h:395
 
void PerformOps(CallOpSetInterface *ops)
 
An interface that can be fed a sequence of messages of type W. 
Definition: sync_stream.h:84
 
Client-side interface for bi-directional streaming. 
Definition: sync_stream.h:231
 
Did it work? If it didn't, why? 
Definition: status.h:45
 
virtual bool Read(R *msg)=0
Blocking read a message and parse to msg. 
 
Common interface for all synchronous client side streaming. 
Definition: sync_stream.h:49
 
ClientReader(Channel *channel, const RpcMethod &method, ClientContext *context, const W &request)
Blocking create a stream and write the first request out. 
Definition: sync_stream.h:121
 
ServerWriter(Call *call, ServerContext *ctx)
Definition: sync_stream.h:339
 
void WaitForInitialMetadata()
Blocking wait for initial metadata from server. 
Definition: sync_stream.h:260
 
bool Read(R *msg) GRPC_OVERRIDE
Blocking read a message and parse to msg. 
Definition: sync_stream.h:324
 
virtual bool Write(const W &msg, const WriteOptions &options)=0
Blocking write msg to the stream with options. 
 
void WaitForInitialMetadata()
Blocking wait for initial metadata from server. 
Definition: sync_stream.h:134
 
#define GRPC_OVERRIDE
Definition: config.h:77
 
bool Write(const W &msg, const WriteOptions &options) GRPC_OVERRIDE
Blocking write msg to the stream with options. 
Definition: sync_stream.h:280
 
virtual ~WriterInterface()
Definition: sync_stream.h:86
 
bool WritesDone() GRPC_OVERRIDE
Block until writes are completed. 
Definition: sync_stream.h:287
 
Channels represent a connection to an endpoint. Created by CreateChannel. 
Definition: channel.h:69