8 : mId(id), mLooper(looper), mCancelled(false), mMoved(false) {
13 moveFrom(std::move(other));
21 if (!mMoved.load() && !mCancelled.load()) {
25 moveFrom(std::move(other));
32void Timer::moveFrom(
Timer&& other)
noexcept {
34 mLooper = other.mLooper;
35 mCancelled.store(other.mCancelled.load());
39 if (
auto looper = mLooper.lock()) {
40 looper->updateTimerCancelledPtr(mId, &mCancelled);
45 other.mMoved.store(
true);
46 other.mCancelled.store(
true);
51 if (!mMoved.load() && !mCancelled.load()) {
54 }
else if (mMoved.load()) {
61 std::cout <<
"[Timer] Cannot cancel moved timer " << mId << std::endl;
65 if (mCancelled.exchange(
true)) {
69 if (
auto looper = mLooper.lock()) {
70 std::cout <<
"[Timer] Cancelling timer " << mId << std::endl;
71 looper->cancelTimerInternal(mId);
76 if (mMoved.load() || mCancelled.load()) {
80 if (
auto looper = mLooper.lock()) {
81 return looper->hasTimerInternal(mId);
92 if (
auto looper = mLooper.lock()) {
96 if (looper->restartTimerInternal(mId, delay_ms)) {
97 mCancelled.store(
false);
Main event loop coordinator for asynchronous task management and timer operations.
RAII timer wrapper with move semantics for safe timer management.
RAII timer wrapper with boost-style API and move semantics.
bool isActive() const
Check if timer is currently active.
void restart(uint64_t delay_ms)
Restart timer with new delay (one-shot timers only)
void cancel()
Cancel the timer.
Timer & operator=(const Timer &)=delete
Copy assignment - deleted (move-only semantics)
Timer(TimerId id, std::weak_ptr< SLLooper > looper)
Constructor - creates timer handle.
~Timer()
Destructor - automatic timer cleanup.
Software Timer namespace containing all timer-related classes.
uint64_t TimerId
Unique identifier type for timer instances.