Merge branch 'c++api' of github.com:ctiller/grpc into c++api

pull/501/head
Craig Tiller 10 years ago
commit 668c5dee38
  1. 13
      include/grpc++/impl/call.h
  2. 46
      src/cpp/common/call.cc

@ -38,7 +38,7 @@
#include <grpc++/completion_queue.h>
#include <memory>
#include <vector>
#include <map>
namespace google {
namespace protobuf {
@ -59,7 +59,9 @@ class CallOpBuffer final : public CompletionQueueTag {
void Reset(void *next_return_tag);
void AddSendInitialMetadata(std::vector<std::pair<grpc::string, grpc::string> > *metadata);
// Does not take ownership.
void AddSendInitialMetadata(
std::multimap<grpc::string, grpc::string> *metadata);
void AddSendMessage(const google::protobuf::Message &message);
void AddRecvMessage(google::protobuf::Message *message);
void AddClientSendClose();
@ -74,7 +76,12 @@ class CallOpBuffer final : public CompletionQueueTag {
void FinalizeResult(void *tag, bool *status) override;
private:
void *return_tag_;
void *return_tag_ = nullptr;
std::multimap<grpc::string, grpc::string>* metadata_ = nullptr;
const google::protobuf::Message* send_message_ = nullptr;
google::protobuf::Message* recv_message_ = nullptr;
bool client_send_close_ = false;
Status* status_ = nullptr;
};
class CCallDeleter {

@ -36,6 +36,52 @@
namespace grpc {
void CallOpBuffer::Reset(void* next_return_tag) {
return_tag_ = next_return_tag;
metadata_ = nullptr;
send_message_ = nullptr;
recv_message_ = nullptr;
client_send_close_ = false;
status_ = false;
}
void CallOpBuffer::AddSendInitialMetadata(
std::multimap<igrpc::string, grpc::string>* metadata) {
metadata_ = metadata;
}
void CallOpBuffer::AddSendMessage(const google::protobuf::Message& message) {
send_message_ = &message;
}
void CallOpBuffer::AddRecvMessage(google::protobuf::Message *message) {
recv_message_ = message;
}
void CallOpBuffer::AddClientSendClose() {
client_sent_close_ = true;
}
void CallOpBuffer::AddClientRecvStatus(Status *status) {
status_ = status;
}
void CallOpBuffer::FillOps(grpc_op *ops, size_t *nops) {
}
void CallOpBuffer::FinalizeResult(void *tag, bool *status) {
}
void CCallDeleter::operator()(grpc_call* c) {
grpc_call_destroy(c);
}
Call::Call(grpc_call* call, ChannelInterface* channel, CompletionQueue* cq)
: channel_(channel), cq_(cq), call_(call) {}
void Call::PerformOps(CallOpBuffer* buffer) {
channel_->PerformOpsOnCall(buffer, this);
}

Loading…
Cancel
Save