|
|
|
@ -25,6 +25,7 @@ |
|
|
|
|
#include <grpcpp/impl/grpc_library.h> |
|
|
|
|
#include <grpcpp/support/time.h> |
|
|
|
|
#include "src/core/lib/iomgr/exec_ctx.h" |
|
|
|
|
#include "src/core/lib/iomgr/executor.h" |
|
|
|
|
#include "src/core/lib/iomgr/timer.h" |
|
|
|
|
#include "src/core/lib/surface/completion_queue.h" |
|
|
|
|
|
|
|
|
@ -81,9 +82,16 @@ class AlarmImpl : public ::grpc::internal::CompletionQueueTag { |
|
|
|
|
Ref(); |
|
|
|
|
GRPC_CLOSURE_INIT(&on_alarm_, |
|
|
|
|
[](void* arg, grpc_error* error) { |
|
|
|
|
AlarmImpl* alarm = static_cast<AlarmImpl*>(arg); |
|
|
|
|
alarm->callback_(error == GRPC_ERROR_NONE); |
|
|
|
|
alarm->Unref(); |
|
|
|
|
grpc_core::Executor::Run( |
|
|
|
|
GRPC_CLOSURE_CREATE( |
|
|
|
|
[](void* arg, grpc_error* error) { |
|
|
|
|
AlarmImpl* alarm = |
|
|
|
|
static_cast<AlarmImpl*>(arg); |
|
|
|
|
alarm->callback_(error == GRPC_ERROR_NONE); |
|
|
|
|
alarm->Unref(); |
|
|
|
|
}, |
|
|
|
|
arg, nullptr), |
|
|
|
|
error); |
|
|
|
|
}, |
|
|
|
|
this, grpc_schedule_on_exec_ctx); |
|
|
|
|
grpc_timer_init(&timer_, grpc_timespec_to_millis_round_up(deadline), |
|
|
|
|