From a229d2ba3170889b724628da0c7ac086bd147a11 Mon Sep 17 00:00:00 2001 From: yhy Date: Wed, 25 Dec 2024 19:38:36 +0800 Subject: [PATCH] =?UTF-8?q?timer=20=E5=88=9D=E6=AD=A5=E5=B0=81=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- includes/net/timer.hpp | 18 ++++++++++++++++++ src/net/timer.cc | 26 ++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 includes/net/timer.hpp create mode 100644 src/net/timer.cc diff --git a/includes/net/timer.hpp b/includes/net/timer.hpp new file mode 100644 index 0000000..b5f6330 --- /dev/null +++ b/includes/net/timer.hpp @@ -0,0 +1,18 @@ +#pragma once +#include "fd_event.hpp" +#include "reactor.hpp" + + +namespace tinyrpc { + + class Timer : FdEvent { + + public: + + Timer(Reactor::Task cb = FdEvent::m_default_callback); + ~Timer(); + private: + // TODO .... 完善 Timer 类 + }; + +} \ No newline at end of file diff --git a/src/net/timer.cc b/src/net/timer.cc new file mode 100644 index 0000000..7ca8e6e --- /dev/null +++ b/src/net/timer.cc @@ -0,0 +1,26 @@ +#include "timer.hpp" +#include "fd_event.hpp" +#include "logger.hpp" +#include +#include +#include +namespace tinyrpc { + + Timer::Timer(Reactor::Task cb /* = FdEvent::m_default_callback */) { + m_fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK | TFD_CLOEXEC); + if(m_fd == -1) { + logger() << "timerfd_create ret -1 err:" << strerror(errno); + exit(-1); + } + addListenEvent(IOEvent::READ); + setReadCallback(cb); + } + + Timer::~Timer() { + int ret = close(m_fd); + if(ret == -1) { + logger() << "close ret -1 err:" << strerror(errno); + // exit(-1); + } + } +} \ No newline at end of file