Skip to content
Snippets Groups Projects
Commit 2d04dd82 authored by Vijay Pai's avatar Vijay Pai
Browse files

Change API for next message size to allow a bool return value for failure

cases.
parent 0a1c5989
No related branches found
No related tags found
No related merge requests found
...@@ -56,7 +56,10 @@ template <class RequestType, class ResponseType> ...@@ -56,7 +56,10 @@ template <class RequestType, class ResponseType>
public: public:
FCUnary(Call* call, ServerContext* ctx): call_(call), ctx_(ctx), read_done_(false), write_done_(false) {} FCUnary(Call* call, ServerContext* ctx): call_(call), ctx_(ctx), read_done_(false), write_done_(false) {}
~FCUnary() {} ~FCUnary() {}
uint32_t NextMessageSize() {return call_->max_message_size();} bool NextMessageSize(uint32_t *sz) {
*sz = call_->max_message_size();
return true;
}
bool Read(RequestType *request) { bool Read(RequestType *request) {
if (read_done_) { if (read_done_) {
return false; return false;
......
...@@ -71,7 +71,7 @@ class ReaderInterface { ...@@ -71,7 +71,7 @@ class ReaderInterface {
virtual ~ReaderInterface() {} virtual ~ReaderInterface() {}
/// Upper bound on the next message size available for reading on this stream /// Upper bound on the next message size available for reading on this stream
virtual uint32_t NextMessageSize() = 0; virtual bool NextMessageSize(uint32_t *sz) = 0;
/// Blocking read a message and parse to \a msg. Returns \a true on success. /// Blocking read a message and parse to \a msg. Returns \a true on success.
/// This is thread-safe with respect to \a Write or \WritesDone methods on /// This is thread-safe with respect to \a Write or \WritesDone methods on
...@@ -151,7 +151,10 @@ class ClientReader GRPC_FINAL : public ClientReaderInterface<R> { ...@@ -151,7 +151,10 @@ class ClientReader GRPC_FINAL : public ClientReaderInterface<R> {
cq_.Pluck(&ops); /// status ignored cq_.Pluck(&ops); /// status ignored
} }
uint32_t NextMessageSize() GRPC_OVERRIDE {return call_.max_message_size();} bool NextMessageSize(uint32_t *sz) GRPC_OVERRIDE {
*sz = call_.max_message_size();
return true;
}
bool Read(R* msg) GRPC_OVERRIDE { bool Read(R* msg) GRPC_OVERRIDE {
CallOpSet<CallOpRecvInitialMetadata, CallOpRecvMessage<R>> ops; CallOpSet<CallOpRecvInitialMetadata, CallOpRecvMessage<R>> ops;
...@@ -298,7 +301,10 @@ class ClientReaderWriter GRPC_FINAL : public ClientReaderWriterInterface<W, R> { ...@@ -298,7 +301,10 @@ class ClientReaderWriter GRPC_FINAL : public ClientReaderWriterInterface<W, R> {
cq_.Pluck(&ops); // status ignored cq_.Pluck(&ops); // status ignored
} }
uint32_t NextMessageSize() GRPC_OVERRIDE {return call_.max_message_size();} bool NextMessageSize(uint32_t *sz) GRPC_OVERRIDE {
*sz = call_.max_message_size();
return true;
}
bool Read(R* msg) GRPC_OVERRIDE { bool Read(R* msg) GRPC_OVERRIDE {
CallOpSet<CallOpRecvInitialMetadata, CallOpRecvMessage<R>> ops; CallOpSet<CallOpRecvInitialMetadata, CallOpRecvMessage<R>> ops;
...@@ -359,7 +365,10 @@ class ServerReader GRPC_FINAL : public ReaderInterface<R> { ...@@ -359,7 +365,10 @@ class ServerReader GRPC_FINAL : public ReaderInterface<R> {
call_->cq()->Pluck(&ops); call_->cq()->Pluck(&ops);
} }
uint32_t NextMessageSize() GRPC_OVERRIDE {return call_->max_message_size();} bool NextMessageSize(uint32_t *sz) GRPC_OVERRIDE {
*sz = call_->max_message_size();
return true;
}
bool Read(R* msg) GRPC_OVERRIDE { bool Read(R* msg) GRPC_OVERRIDE {
CallOpSet<CallOpRecvMessage<R>> ops; CallOpSet<CallOpRecvMessage<R>> ops;
...@@ -427,7 +436,10 @@ class ServerReaderWriter GRPC_FINAL : public WriterInterface<W>, ...@@ -427,7 +436,10 @@ class ServerReaderWriter GRPC_FINAL : public WriterInterface<W>,
call_->cq()->Pluck(&ops); call_->cq()->Pluck(&ops);
} }
uint32_t NextMessageSize() GRPC_OVERRIDE {return call_->max_message_size();} bool NextMessageSize(uint32_t *sz) GRPC_OVERRIDE {
*sz = call_->max_message_size();
return true;
}
bool Read(R* msg) GRPC_OVERRIDE { bool Read(R* msg) GRPC_OVERRIDE {
CallOpSet<CallOpRecvMessage<R>> ops; CallOpSet<CallOpRecvMessage<R>> ops;
......
...@@ -426,7 +426,9 @@ public: ...@@ -426,7 +426,9 @@ public:
Status FCEcho(ServerContext* context, FCUnary<EchoRequest,EchoResponse>* fc_unary) GRPC_OVERRIDE { Status FCEcho(ServerContext* context, FCUnary<EchoRequest,EchoResponse>* fc_unary) GRPC_OVERRIDE {
EchoRequest req; EchoRequest req;
EchoResponse resp; EchoResponse resp;
gpr_log(GPR_INFO, "FC Unary Next Message Size is %u", fc_unary->NextMessageSize()); uint32_t next_msg_sz;
fc_unary->NextMessageSize(&next_msg_sz);
gpr_log(GPR_INFO, "FC Unary Next Message Size is %u", next_msg_sz);
GPR_ASSERT(fc_unary->Read(&req)); GPR_ASSERT(fc_unary->Read(&req));
resp.set_message(req.message() + "_dup"); resp.set_message(req.message() + "_dup");
GPR_ASSERT(fc_unary->Write(resp)); GPR_ASSERT(fc_unary->Write(resp));
......
...@@ -64,7 +64,10 @@ class MockClientReaderWriter GRPC_FINAL ...@@ -64,7 +64,10 @@ class MockClientReaderWriter GRPC_FINAL
: public ClientReaderWriterInterface<W, R> { : public ClientReaderWriterInterface<W, R> {
public: public:
void WaitForInitialMetadata() GRPC_OVERRIDE {} void WaitForInitialMetadata() GRPC_OVERRIDE {}
uint32_t NextMessageSize() GRPC_OVERRIDE {return UINT_MAX;} bool NextMessageSize(uint32_t* sz) GRPC_OVERRIDE {
*sz = UINT_MAX;
return true;
}
bool Read(R* msg) GRPC_OVERRIDE { return true; } bool Read(R* msg) GRPC_OVERRIDE { return true; }
bool Write(const W& msg) GRPC_OVERRIDE { return true; } bool Write(const W& msg) GRPC_OVERRIDE { return true; }
bool WritesDone() GRPC_OVERRIDE { return true; } bool WritesDone() GRPC_OVERRIDE { return true; }
...@@ -76,7 +79,10 @@ class MockClientReaderWriter<EchoRequest, EchoResponse> GRPC_FINAL ...@@ -76,7 +79,10 @@ class MockClientReaderWriter<EchoRequest, EchoResponse> GRPC_FINAL
public: public:
MockClientReaderWriter() : writes_done_(false) {} MockClientReaderWriter() : writes_done_(false) {}
void WaitForInitialMetadata() GRPC_OVERRIDE {} void WaitForInitialMetadata() GRPC_OVERRIDE {}
uint32_t NextMessageSize() GRPC_OVERRIDE {return UINT_MAX;} bool NextMessageSize(uint32_t* sz) GRPC_OVERRIDE {
*sz = UINT_MAX;
return true;
}
bool Read(EchoResponse* msg) GRPC_OVERRIDE { bool Read(EchoResponse* msg) GRPC_OVERRIDE {
if (writes_done_) return false; if (writes_done_) return false;
msg->set_message(last_message_); msg->set_message(last_message_);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment