20 #include <pv/pvType.h> 21 #include <pv/thread.h> 22 #include <pv/timeStamp.h> 25 #include <pv/sharedPtr.h> 29 namespace epics {
namespace pvData {
33 typedef std::tr1::shared_ptr<TimerCallback> TimerCallbackPtr;
34 typedef std::tr1::shared_ptr<Timer> TimerPtr;
40 class epicsShareClass TimerCallback {
50 virtual ~TimerCallback(){}
54 virtual void callback() = 0;
58 virtual void timerStopped() = 0;
64 struct IncreasingTime;
71 class epicsShareClass Timer :
private Runnable {
78 Timer(std::string threadName, ThreadPriority priority);
87 void scheduleAfterDelay(
88 TimerCallbackPtr
const &timerCallback,
96 void schedulePeriodic(
97 TimerCallbackPtr
const &timerCallback,
105 bool cancel(TimerCallbackPtr
const &timerCallback);
111 bool isScheduled(TimerCallbackPtr
const &timerCallback)
const;
116 void dump(std::ostream& o)
const;
122 void addElement(TimerCallbackPtr
const &timerCallback);
124 typedef std::list<TimerCallbackPtr> queue_t;
134 epicsShareExtern std::ostream& operator<<(std::ostream& o,
const Timer& timer);
#define POINTER_DEFINITIONS(clazz)