lock.Unlock();
}
-void SafeTimer::add_event_after(double seconds, Context *callback)
+bool SafeTimer::add_event_after(double seconds, Context *callback)
{
assert(lock.is_locked());
utime_t when = ceph_clock_now();
when += seconds;
- add_event_at(when, callback);
+ return add_event_at(when, callback);
}
-void SafeTimer::add_event_at(utime_t when, Context *callback)
+bool SafeTimer::add_event_at(utime_t when, Context *callback)
{
assert(lock.is_locked());
ldout(cct,10) << __func__ << " " << when << " -> " << callback << dendl;
if (stopping) {
ldout(cct,5) << __func__ << " already shutdown, event not added" << dendl;
delete callback;
+ return false;
}
scheduled_map_t::value_type s_val(when, callback);
scheduled_map_t::iterator i = schedule.insert(s_val);
* adjust our timeout. */
if (i == schedule.begin())
cond.Signal();
-
+ return true;
}
bool SafeTimer::cancel_event(Context *callback)
/* Schedule an event in the future
* Call with the event_lock LOCKED */
- void add_event_after(double seconds, Context *callback);
- void add_event_at(utime_t when, Context *callback);
+ bool add_event_after(double seconds, Context *callback);
+ bool add_event_at(utime_t when, Context *callback);
/* Cancel an event.
* Call with the event_lock LOCKED