Go to the documentation of this file.
19 #ifndef GRPCPP_IMPL_CODEGEN_SERVER_INTERCEPTOR_H
20 #define GRPCPP_IMPL_CODEGEN_SERVER_INTERCEPTOR_H
32 class InterceptorBatchMethodsImpl;
35 namespace experimental {
72 const char*
method()
const {
return method_; }
84 "violated expectation about Type enum");
87 "violated expectation about Type enum");
90 "violated expectation about Type enum");
93 "violated expectation about Type enum");
103 interceptors_[pos]->Intercept(interceptor_methods);
106 void RegisterInterceptors(
108 std::unique_ptr<experimental::ServerInterceptorFactoryInterface>>&
110 for (
const auto& creator : creators) {
111 auto* interceptor = creator->CreateServerInterceptor(
this);
112 if (interceptor !=
nullptr) {
113 interceptors_.push_back(
114 std::unique_ptr<experimental::Interceptor>(interceptor));
119 void Ref() { ref_.fetch_add(1, std::memory_order_relaxed); }
121 if (
GPR_UNLIKELY(ref_.fetch_sub(1, std::memory_order_acq_rel) == 1)) {
127 const char* method_ =
nullptr;
129 std::atomic<intptr_t> ref_{1};
130 std::vector<std::unique_ptr<experimental::Interceptor>> interceptors_;
139 #endif // GRPCPP_IMPL_CODEGEN_SERVER_INTERCEPTOR_H
An Alarm posts the user-provided tag to its associated completion queue or invokes the user-provided ...
Definition: alarm.h:33
const char * method() const
Return the fully-specified method name.
Definition: server_interceptor.h:72
Base class of ServerContext. Experimental until callback API is final.
Definition: server_context.h:131
::grpc::ServerContextBase ServerContextBase
Definition: server_context.h:108
~ServerRpcInfo()
Definition: server_interceptor.h:61
@ CLIENT_STREAMING
Definition: rpc_method.h:33
@ BIDI_STREAMING
Definition: rpc_method.h:35
ServerContextBase * server_context()
Return a pointer to the underlying ServerContext structure associated with the RPC to support feature...
Definition: server_interceptor.h:79
ServerRpcInfo & operator=(const ServerRpcInfo &)=delete
@ SERVER_STREAMING
Definition: rpc_method.h:34
ServerRpcInfo(const ServerRpcInfo &)=delete
RpcType
Definition: rpc_method.h:31
@ NORMAL_RPC
Definition: rpc_method.h:32
ServerRpcInfo represents the state of a particular RPC as it appears to an interceptor.
Definition: server_interceptor.h:56
Interface for an interceptor.
Definition: interceptor.h:216
Definition: server_interceptor.h:43
virtual Interceptor * CreateServerInterceptor(ServerRpcInfo *info)=0
virtual ~ServerInterceptorFactoryInterface()
Definition: server_interceptor.h:45
Class that is passed as an argument to the Intercept method of the application's Interceptor interfac...
Definition: interceptor.h:93
#define GPR_CODEGEN_ASSERT(x)
Codegen specific version of GPR_ASSERT.
Definition: core_codegen_interface.h:146
Type type() const
Return the type of the RPC (unary or a streaming flavor)
Definition: server_interceptor.h:75
Type
Type categorizes RPCs by unary or streaming type.
Definition: server_interceptor.h:59
Definition: interceptor_common.h:36