Made Alarm's constructor a template for deadline

pull/5293/head
David Garcia Quintas 9 years ago
parent 7da3297be7
commit 5e07d76a86
  1. 8
      include/grpc++/alarm.h
  2. 10
      src/cpp/common/alarm.cc

@ -39,6 +39,8 @@
#include <grpc++/impl/codegen/completion_queue_tag.h>
#include <grpc++/impl/codegen/grpc_library.h>
#include <grpc++/impl/codegen/time.h>
#include <grpc++/impl/codegen/completion_queue.h>
#include <grpc/grpc.h>
struct grpc_alarm;
@ -54,7 +56,11 @@ 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).
Alarm(CompletionQueue* cq, gpr_timespec deadline, void* tag);
template <typename T>
Alarm(CompletionQueue* cq, const T& deadline, void* tag)
: tag_(tag),
alarm_(grpc_alarm_create(cq->cq(), TimePoint<T>(deadline).raw_time(),
static_cast<void*>(&tag_))) {}
/// Destroy the given completion queue alarm, cancelling it in the process.
~Alarm();

@ -31,21 +31,17 @@
*/
#include <grpc++/alarm.h>
#include <grpc++/completion_queue.h>
#include <grpc++/impl/grpc_library.h>
#include <grpc/grpc.h>
namespace grpc {
static internal::GrpcLibraryInitializer g_gli_initializer;
Alarm::Alarm(CompletionQueue* cq, gpr_timespec deadline, void* tag)
: tag_(tag),
alarm_(grpc_alarm_create(cq->cq(), deadline, static_cast<void*>(&tag_))) {
Alarm::~Alarm() {
g_gli_initializer.summon();
grpc_alarm_destroy(alarm_);
}
Alarm::~Alarm() { grpc_alarm_destroy(alarm_); }
void Alarm::Cancel() { grpc_alarm_cancel(alarm_); }
} // namespace grpc

Loading…
Cancel
Save