Add setter to override authority header on ClientContext

pull/501/head
Yang Gao 10 years ago
parent 573523f127
commit f2c0ca4c62
  1. 9
      include/grpc++/client_context.h
  2. 7
      src/cpp/client/channel.cc

@ -94,6 +94,10 @@ class ClientContext {
void set_absolute_deadline(const system_clock::time_point &deadline); void set_absolute_deadline(const system_clock::time_point &deadline);
system_clock::time_point absolute_deadline(); system_clock::time_point absolute_deadline();
void set_authority(const grpc::string& authority) {
authority_ = authority;
}
void TryCancel(); void TryCancel();
private: private:
@ -137,10 +141,15 @@ class ClientContext {
gpr_timespec RawDeadline() { return absolute_deadline_; } gpr_timespec RawDeadline() { return absolute_deadline_; }
grpc::string authority() {
return authority_;
}
bool initial_metadata_received_ = false; bool initial_metadata_received_ = false;
grpc_call *call_; grpc_call *call_;
grpc_completion_queue *cq_; grpc_completion_queue *cq_;
gpr_timespec absolute_deadline_; gpr_timespec absolute_deadline_;
grpc::string authority_;
std::multimap<grpc::string, grpc::string> send_initial_metadata_; std::multimap<grpc::string, grpc::string> send_initial_metadata_;
std::multimap<grpc::string, grpc::string> recv_initial_metadata_; std::multimap<grpc::string, grpc::string> recv_initial_metadata_;
std::multimap<grpc::string, grpc::string> trailing_metadata_; std::multimap<grpc::string, grpc::string> trailing_metadata_;

@ -81,8 +81,11 @@ Channel::~Channel() { grpc_channel_destroy(c_channel_); }
Call Channel::CreateCall(const RpcMethod &method, ClientContext *context, Call Channel::CreateCall(const RpcMethod &method, ClientContext *context,
CompletionQueue *cq) { CompletionQueue *cq) {
auto c_call = auto c_call =
grpc_channel_create_call(c_channel_, cq->cq(), method.name(), grpc_channel_create_call(
target_.c_str(), context->RawDeadline()); c_channel_, cq->cq(), method.name(),
context->authority().empty() ? target_.c_str()
: context->authority(),
context->RawDeadline());
context->set_call(c_call); context->set_call(c_call);
return Call(c_call, this, cq); return Call(c_call, this, cq);
} }

Loading…
Cancel
Save