mirror of
https://fuchsia.googlesource.com/third_party/grpc
synced 2024-09-20 03:14:03 +00:00
PR comments addressed
This commit is contained in:
parent
ef02fb9d6f
commit
0160873273
|
@ -56,6 +56,10 @@ class Alarm : private GrpcLibrary {
|
|||
/// Once the alarm expires (at \a deadline) or it's cancelled (see \a Cancel),
|
||||
/// an event with tag \a tag will be added to \a cq. If the alarm expired, the
|
||||
/// event's success bit will be true, false otherwise (ie, upon cancellation).
|
||||
/// \internal We rely on the presence of \a cq for grpc initialization. If \a
|
||||
/// cq were ever to be removed, a reference to a static
|
||||
/// internal::GrpcLibraryInitializer instance would need to be introduced
|
||||
/// here. \endinternal.
|
||||
template <typename T>
|
||||
Alarm(CompletionQueue* cq, const T& deadline, void* tag)
|
||||
: tag_(tag),
|
||||
|
|
|
@ -64,8 +64,9 @@ grpc_alarm *grpc_alarm_create(grpc_completion_queue *cq, gpr_timespec deadline,
|
|||
alarm->tag = tag;
|
||||
|
||||
grpc_cq_begin_op(cq, tag);
|
||||
grpc_timer_init(&exec_ctx, &alarm->alarm, deadline, alarm_cb, alarm,
|
||||
gpr_now(GPR_CLOCK_MONOTONIC));
|
||||
grpc_timer_init(&exec_ctx, &alarm->alarm,
|
||||
gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC),
|
||||
alarm_cb, alarm, gpr_now(GPR_CLOCK_MONOTONIC));
|
||||
grpc_exec_ctx_finish(&exec_ctx);
|
||||
return alarm;
|
||||
}
|
||||
|
|
|
@ -35,10 +35,7 @@
|
|||
|
||||
namespace grpc {
|
||||
|
||||
static internal::GrpcLibraryInitializer g_gli_initializer;
|
||||
|
||||
Alarm::~Alarm() {
|
||||
g_gli_initializer.summon();
|
||||
grpc_alarm_destroy(alarm_);
|
||||
}
|
||||
|
||||
|
|
|
@ -55,6 +55,23 @@ TEST(AlarmTest, RegularExpiry) {
|
|||
EXPECT_EQ(junk, output_tag);
|
||||
}
|
||||
|
||||
TEST(AlarmTest, RegularExpiryChrono) {
|
||||
CompletionQueue cq;
|
||||
void* junk = reinterpret_cast<void*>(1618033);
|
||||
std::chrono::system_clock::time_point one_sec_deadline =
|
||||
std::chrono::system_clock::now() + std::chrono::seconds(1);
|
||||
Alarm alarm(&cq, one_sec_deadline, junk);
|
||||
|
||||
void* output_tag;
|
||||
bool ok;
|
||||
const CompletionQueue::NextStatus status = cq.AsyncNext(
|
||||
(void**)&output_tag, &ok, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(2));
|
||||
|
||||
EXPECT_EQ(status, CompletionQueue::GOT_EVENT);
|
||||
EXPECT_TRUE(ok);
|
||||
EXPECT_EQ(junk, output_tag);
|
||||
}
|
||||
|
||||
TEST(AlarmTest, Cancellation) {
|
||||
CompletionQueue cq;
|
||||
void* junk = reinterpret_cast<void*>(1618033);
|
||||
|
|
Loading…
Reference in New Issue
Block a user