+ if(slots.empty())
+ return TimeStamp();
+ return slots.begin()->slot->get_timeout();
+}
+
+
+Timer::Slot::Slot(const TimeDelta &td):
+ interval(td),
+ timeout(now()+interval)
+{ }
+
+Timer::Slot::Slot(const TimeStamp &ts):
+ timeout(ts)
+{ }
+
+bool Timer::Slot::increment()
+{
+ if(!interval)
+ return false;
+ timeout += interval;
+ return true;