xref: /aosp_15_r20/external/grpc-grpc/src/cpp/server/server_callback.cc (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1*cc02d7e2SAndroid Build Coastguard Worker //
2*cc02d7e2SAndroid Build Coastguard Worker // Copyright 2019 gRPC authors.
3*cc02d7e2SAndroid Build Coastguard Worker //
4*cc02d7e2SAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License");
5*cc02d7e2SAndroid Build Coastguard Worker // you may not use this file except in compliance with the License.
6*cc02d7e2SAndroid Build Coastguard Worker // You may obtain a copy of the License at
7*cc02d7e2SAndroid Build Coastguard Worker //
8*cc02d7e2SAndroid Build Coastguard Worker //     http://www.apache.org/licenses/LICENSE-2.0
9*cc02d7e2SAndroid Build Coastguard Worker //
10*cc02d7e2SAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
11*cc02d7e2SAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS,
12*cc02d7e2SAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*cc02d7e2SAndroid Build Coastguard Worker // See the License for the specific language governing permissions and
14*cc02d7e2SAndroid Build Coastguard Worker // limitations under the License.
15*cc02d7e2SAndroid Build Coastguard Worker //
16*cc02d7e2SAndroid Build Coastguard Worker //
17*cc02d7e2SAndroid Build Coastguard Worker 
18*cc02d7e2SAndroid Build Coastguard Worker #include <grpcpp/support/server_callback.h>
19*cc02d7e2SAndroid Build Coastguard Worker 
20*cc02d7e2SAndroid Build Coastguard Worker namespace grpc {
21*cc02d7e2SAndroid Build Coastguard Worker namespace internal {
22*cc02d7e2SAndroid Build Coastguard Worker 
ScheduleOnDone(bool inline_ondone)23*cc02d7e2SAndroid Build Coastguard Worker void ServerCallbackCall::ScheduleOnDone(bool inline_ondone) {
24*cc02d7e2SAndroid Build Coastguard Worker   if (inline_ondone) {
25*cc02d7e2SAndroid Build Coastguard Worker     CallOnDone();
26*cc02d7e2SAndroid Build Coastguard Worker     return;
27*cc02d7e2SAndroid Build Coastguard Worker   }
28*cc02d7e2SAndroid Build Coastguard Worker   RunAsync([this]() { CallOnDone(); });
29*cc02d7e2SAndroid Build Coastguard Worker }
30*cc02d7e2SAndroid Build Coastguard Worker 
CallOnCancel(ServerReactor * reactor)31*cc02d7e2SAndroid Build Coastguard Worker void ServerCallbackCall::CallOnCancel(ServerReactor* reactor) {
32*cc02d7e2SAndroid Build Coastguard Worker   if (reactor->InternalInlineable()) {
33*cc02d7e2SAndroid Build Coastguard Worker     reactor->OnCancel();
34*cc02d7e2SAndroid Build Coastguard Worker     return;
35*cc02d7e2SAndroid Build Coastguard Worker   }
36*cc02d7e2SAndroid Build Coastguard Worker   Ref();
37*cc02d7e2SAndroid Build Coastguard Worker   RunAsync([this, reactor]() {
38*cc02d7e2SAndroid Build Coastguard Worker     reactor->OnCancel();
39*cc02d7e2SAndroid Build Coastguard Worker     MaybeDone();
40*cc02d7e2SAndroid Build Coastguard Worker   });
41*cc02d7e2SAndroid Build Coastguard Worker }
42*cc02d7e2SAndroid Build Coastguard Worker 
43*cc02d7e2SAndroid Build Coastguard Worker }  // namespace internal
44*cc02d7e2SAndroid Build Coastguard Worker }  // namespace grpc
45