aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/grpc++/server_context.h
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2015-02-12 14:33:54 -0800
committerGravatar Craig Tiller <ctiller@google.com>2015-02-12 14:33:54 -0800
commit3d6ceb646178ce7a5b0de38c38ba75da448fae39 (patch)
treeb2a7c62ba6eab5ff26e57377578a7948ec13cd62 /include/grpc++/server_context.h
parent984b09087f77b9aa1b64c3b23fa50b9cf06b5e0b (diff)
Async server dispatch
Diffstat (limited to 'include/grpc++/server_context.h')
-rw-r--r--include/grpc++/server_context.h54
1 files changed, 36 insertions, 18 deletions
diff --git a/include/grpc++/server_context.h b/include/grpc++/server_context.h
index e976e11814..fcca85594a 100644
--- a/include/grpc++/server_context.h
+++ b/include/grpc++/server_context.h
@@ -39,43 +39,61 @@
#include "config.h"
-struct grpc_metadata;
struct gpr_timespec;
+struct grpc_metadata;
+struct grpc_call;
namespace grpc {
-template <class R> class ServerAsyncReader;
-template <class W> class ServerAsyncWriter;
-template <class R, class W> class ServerAsyncReaderWriter;
-template <class R> class ServerReader;
-template <class W> class ServerWriter;
-template <class R, class W> class ServerReaderWriter;
+template <class R>
+class ServerAsyncReader;
+template <class W>
+class ServerAsyncWriter;
+template <class R, class W>
+class ServerAsyncReaderWriter;
+template <class R>
+class ServerReader;
+template <class W>
+class ServerWriter;
+template <class R, class W>
+class ServerReaderWriter;
class CallOpBuffer;
class Server;
// Interface of server side rpc context.
-class ServerContext {
+class ServerContext final {
public:
- virtual ~ServerContext() {}
+ ServerContext(); // for async calls
+ ~ServerContext();
- std::chrono::system_clock::time_point absolute_deadline() { return deadline_; }
+ std::chrono::system_clock::time_point absolute_deadline() {
+ return deadline_;
+ }
void AddInitialMetadata(const grpc::string& key, const grpc::string& value);
void AddTrailingMetadata(const grpc::string& key, const grpc::string& value);
private:
friend class ::grpc::Server;
- template <class R> friend class ::grpc::ServerAsyncReader;
- template <class W> friend class ::grpc::ServerAsyncWriter;
- template <class R, class W> friend class ::grpc::ServerAsyncReaderWriter;
- template <class R> friend class ::grpc::ServerReader;
- template <class W> friend class ::grpc::ServerWriter;
- template <class R, class W> friend class ::grpc::ServerReaderWriter;
+ template <class R>
+ friend class ::grpc::ServerAsyncReader;
+ template <class W>
+ friend class ::grpc::ServerAsyncWriter;
+ template <class R, class W>
+ friend class ::grpc::ServerAsyncReaderWriter;
+ template <class R>
+ friend class ::grpc::ServerReader;
+ template <class W>
+ friend class ::grpc::ServerWriter;
+ template <class R, class W>
+ friend class ::grpc::ServerReaderWriter;
- ServerContext(gpr_timespec deadline, grpc_metadata *metadata, size_t metadata_count);
+ ServerContext(gpr_timespec deadline, grpc_metadata* metadata,
+ size_t metadata_count);
- const std::chrono::system_clock::time_point deadline_;
+ std::chrono::system_clock::time_point deadline_;
+ grpc_call* call_ = nullptr;
bool sent_initial_metadata_ = false;
std::multimap<grpc::string, grpc::string> client_metadata_;
std::multimap<grpc::string, grpc::string> initial_metadata_;