aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar yangg <yangg@google.com>2015-01-06 10:16:15 -0800
committerGravatar Nicolas Noble <nnoble@google.com>2015-01-06 17:45:46 -0800
commited5e7e006b1a60ef01a0ee1db144e959436b53d7 (patch)
tree4166d8504d804d00ff96e8ce47ae4e6ecf7e2152 /src
parentc87b1c533f84a9bed94143908b00b0cc498cfda5 (diff)
Add deadline API on server side.
Change on 2015/01/06 by yangg <yangg@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=83351442
Diffstat (limited to 'src')
-rw-r--r--src/cpp/server/server_context_impl.cc2
-rw-r--r--src/cpp/server/server_context_impl.h14
-rw-r--r--src/cpp/server/server_rpc_handler.cc2
-rw-r--r--src/cpp/util/time.cc3
4 files changed, 17 insertions, 4 deletions
diff --git a/src/cpp/server/server_context_impl.cc b/src/cpp/server/server_context_impl.cc
index a229fcb6c9..13f2a3ae1a 100644
--- a/src/cpp/server/server_context_impl.cc
+++ b/src/cpp/server/server_context_impl.cc
@@ -35,6 +35,4 @@
namespace grpc {
-ServerContextImpl::ServerContextImpl() {}
-
} // namespace grpc
diff --git a/src/cpp/server/server_context_impl.h b/src/cpp/server/server_context_impl.h
index 58c4293b4f..c6016b7635 100644
--- a/src/cpp/server/server_context_impl.h
+++ b/src/cpp/server/server_context_impl.h
@@ -36,12 +36,24 @@
#include <grpc++/server_context.h>
+#include <chrono>
+
+#include <grpc/support/time.h>
+
namespace grpc {
class ServerContextImpl : public ServerContext {
public:
- ServerContextImpl();
+ explicit ServerContextImpl(std::chrono::system_clock::time_point deadline)
+ : absolute_deadline_(deadline) {}
~ServerContextImpl() {}
+
+ std::chrono::system_clock::time_point absolute_deadline() const {
+ return absolute_deadline_;
+ }
+
+ private:
+ std::chrono::system_clock::time_point absolute_deadline_;
};
} // namespace grpc
diff --git a/src/cpp/server/server_rpc_handler.cc b/src/cpp/server/server_rpc_handler.cc
index c32722f81a..3954f04f97 100644
--- a/src/cpp/server/server_rpc_handler.cc
+++ b/src/cpp/server/server_rpc_handler.cc
@@ -53,7 +53,7 @@ void ServerRpcHandler::StartRpc() {
return;
}
- ServerContextImpl user_context;
+ ServerContextImpl user_context(async_server_context_->absolute_deadline());
if (method_->method_type() == RpcMethod::NORMAL_RPC) {
// Start the rpc on this dedicated completion queue.
diff --git a/src/cpp/util/time.cc b/src/cpp/util/time.cc
index 6976fa1b32..e58dde82a3 100644
--- a/src/cpp/util/time.cc
+++ b/src/cpp/util/time.cc
@@ -53,6 +53,9 @@ void Timepoint2Timespec(const system_clock::time_point& from,
}
system_clock::time_point Timespec2Timepoint(gpr_timespec t) {
+ if (gpr_time_cmp(t, gpr_inf_future) == 0) {
+ return system_clock::time_point::max();
+ }
system_clock::time_point tp;
tp += duration_cast<system_clock::time_point::duration>(seconds(t.tv_sec));
tp +=