aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/grpc++/server_context.h13
-rw-r--r--src/cpp/common/completion_queue.cc2
-rw-r--r--src/cpp/server/server_context.cc14
3 files changed, 24 insertions, 5 deletions
diff --git a/include/grpc++/server_context.h b/include/grpc++/server_context.h
index a58e63aff2..790dd7116b 100644
--- a/include/grpc++/server_context.h
+++ b/include/grpc++/server_context.h
@@ -35,7 +35,7 @@
#define __GRPCPP_SERVER_CONTEXT_H_
#include <chrono>
-#include <vector>
+#include <map>
#include "config.h"
@@ -44,16 +44,21 @@ struct gpr_timespec;
namespace grpc {
+class Server;
+
// Interface of server side rpc context.
class ServerContext {
public:
- ServerContext(gpr_timespec deadline, grpc_metadata *metadata, size_t metadata_count);
virtual ~ServerContext() {}
- std::chrono::system_clock::time_point absolute_deadline();
+ std::chrono::system_clock::time_point absolute_deadline() { return deadline_; }
private:
- std::vector<std::pair<grpc::string, grpc::string> > metadata_;
+ friend class ::grpc::Server;
+ ServerContext(gpr_timespec deadline, grpc_metadata *metadata, size_t metadata_count);
+
+ const std::chrono::system_clock::time_point deadline_;
+ std::multimap<grpc::string, grpc::string> metadata_;
};
} // namespace grpc
diff --git a/src/cpp/common/completion_queue.cc b/src/cpp/common/completion_queue.cc
index cbeda81a0b..f69ddc3b7e 100644
--- a/src/cpp/common/completion_queue.cc
+++ b/src/cpp/common/completion_queue.cc
@@ -43,6 +43,8 @@ namespace grpc {
CompletionQueue::CompletionQueue() { cq_ = grpc_completion_queue_create(); }
+CompletionQueue::CompletionQueue(grpc_completion_queue *take) : cq_(take) {}
+
CompletionQueue::~CompletionQueue() { grpc_completion_queue_destroy(cq_); }
void CompletionQueue::Shutdown() { grpc_completion_queue_shutdown(cq_); }
diff --git a/src/cpp/server/server_context.cc b/src/cpp/server/server_context.cc
index 0edadd8709..7e0bc4de36 100644
--- a/src/cpp/server/server_context.cc
+++ b/src/cpp/server/server_context.cc
@@ -32,5 +32,17 @@
*/
#include <grpc++/server_context.h>
+#include <grpc/grpc.h>
+#include "src/cpp/util/time.h"
-namespace grpc {} // namespace grpc
+namespace grpc {
+
+ServerContext::ServerContext(gpr_timespec deadline, grpc_metadata *metadata, size_t metadata_count)
+ : deadline_(Timespec2Timepoint(deadline)) {
+ for (size_t i = 0; i < metadata_count; i++) {
+ metadata_.insert(std::make_pair(grpc::string(metadata[i].key),
+ grpc::string(metadata[i].value, metadata[i].value + metadata[i].value_length)));
+ }
+}
+
+} // namespace grpc