aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Yang Gao <yangg@google.com>2015-02-11 11:45:33 -0800
committerGravatar Yang Gao <yangg@google.com>2015-02-11 11:45:33 -0800
commita5e2a03fec5fb27f014d3130ede7fe9b6c052e3a (patch)
treeef2697581a1d4854f38c5a34f9b6ada0b0d5fe91
parent99b07d1ea788ee126fa4b1aa8c84fb293147b177 (diff)
parent854a30c73a2ae7123e62291ec91666c29aa1c50d (diff)
Merge branch 'c++api' of github.com:ctiller/grpc into c++api
-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