67 lines
1.5 KiB
C++
67 lines
1.5 KiB
C++
#ifndef __Timer_h__
|
|
#define __Timer_h__
|
|
|
|
#include "Socket.h"
|
|
#include "EPoll.h"
|
|
|
|
namespace core {
|
|
|
|
///
|
|
/// Timer
|
|
///
|
|
/// Set and trigger callback upon specified timeout.
|
|
///
|
|
/// The Timer is used to establish a timer using the timer socket
|
|
/// interface. It cannot be instantiated directly but must be extended.
|
|
///
|
|
|
|
class Timer : Socket {
|
|
|
|
public:
|
|
Timer(EPoll &ePoll);
|
|
Timer(EPoll &ePoll, double delay);
|
|
~Timer();
|
|
|
|
///
|
|
/// Use the setTimer() method to set the time out value for timer. Setting the timer
|
|
/// also starts the timer countdown. The clearTimer() method can be used to reset
|
|
/// the timer without triggering the onTimeout() callback.
|
|
///
|
|
/// @param delay the amount of time in seconds to wait before trigering the onTimeout function.
|
|
///
|
|
|
|
void setTimer(double delay);
|
|
|
|
///
|
|
/// Use the clearTimer() to unset the timer and return the timer to an idle state.
|
|
///
|
|
|
|
void clearTimer();
|
|
|
|
///
|
|
/// Use the getElapsed() method to obtain the amount of time that has elapsed since
|
|
/// the timer was set.
|
|
///
|
|
|
|
double getElapsed();
|
|
|
|
double getEpoch();
|
|
|
|
protected:
|
|
|
|
///
|
|
/// This method is called when the time out occurs.
|
|
///
|
|
|
|
virtual void onTimeout() = 0;
|
|
|
|
private:
|
|
void onDataReceived(std::string data) override;
|
|
double delayValue;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|