|
|
|
@ -174,13 +174,14 @@ class ServerInterface : public internal::CallHook { |
|
|
|
|
bool done_intercepting_; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/// RegisteredAsyncRequest is not part of the C++ API
|
|
|
|
|
class RegisteredAsyncRequest : public BaseAsyncRequest { |
|
|
|
|
public: |
|
|
|
|
RegisteredAsyncRequest(ServerInterface* server, ServerContext* context, |
|
|
|
|
internal::ServerAsyncStreamingInterface* stream, |
|
|
|
|
CompletionQueue* call_cq, |
|
|
|
|
ServerCompletionQueue* notification_cq, void* tag, |
|
|
|
|
const char* name); |
|
|
|
|
const char* name, internal::RpcMethod::RpcType type); |
|
|
|
|
|
|
|
|
|
virtual bool FinalizeResult(void** tag, bool* status) override { |
|
|
|
|
/* If we are done intercepting, then there is nothing more for us to do */ |
|
|
|
@ -189,7 +190,7 @@ class ServerInterface : public internal::CallHook { |
|
|
|
|
} |
|
|
|
|
call_wrapper_ = internal::Call( |
|
|
|
|
call_, server_, call_cq_, server_->max_receive_message_size(), |
|
|
|
|
context_->set_server_rpc_info(name_, |
|
|
|
|
context_->set_server_rpc_info(name_, type_, |
|
|
|
|
*server_->interceptor_creators())); |
|
|
|
|
return BaseAsyncRequest::FinalizeResult(tag, status); |
|
|
|
|
} |
|
|
|
@ -198,6 +199,7 @@ class ServerInterface : public internal::CallHook { |
|
|
|
|
void IssueRequest(void* registered_method, grpc_byte_buffer** payload, |
|
|
|
|
ServerCompletionQueue* notification_cq); |
|
|
|
|
const char* name_; |
|
|
|
|
const internal::RpcMethod::RpcType type_; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
class NoPayloadAsyncRequest final : public RegisteredAsyncRequest { |
|
|
|
@ -207,9 +209,9 @@ class ServerInterface : public internal::CallHook { |
|
|
|
|
internal::ServerAsyncStreamingInterface* stream, |
|
|
|
|
CompletionQueue* call_cq, |
|
|
|
|
ServerCompletionQueue* notification_cq, void* tag) |
|
|
|
|
: RegisteredAsyncRequest(server, context, stream, call_cq, |
|
|
|
|
notification_cq, tag, |
|
|
|
|
registered_method->name()) { |
|
|
|
|
: RegisteredAsyncRequest( |
|
|
|
|
server, context, stream, call_cq, notification_cq, tag, |
|
|
|
|
registered_method->name(), registered_method->method_type()) { |
|
|
|
|
IssueRequest(registered_method->server_tag(), nullptr, notification_cq); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -225,9 +227,9 @@ class ServerInterface : public internal::CallHook { |
|
|
|
|
CompletionQueue* call_cq, |
|
|
|
|
ServerCompletionQueue* notification_cq, void* tag, |
|
|
|
|
Message* request) |
|
|
|
|
: RegisteredAsyncRequest(server, context, stream, call_cq, |
|
|
|
|
notification_cq, tag, |
|
|
|
|
registered_method->name()), |
|
|
|
|
: RegisteredAsyncRequest( |
|
|
|
|
server, context, stream, call_cq, notification_cq, tag, |
|
|
|
|
registered_method->name(), registered_method->method_type()), |
|
|
|
|
registered_method_(registered_method), |
|
|
|
|
server_(server), |
|
|
|
|
context_(context), |
|
|
|
|