start to implement timeoutmanager
This commit is contained in:
parent
b7403dc872
commit
422f5d7448
@ -22,8 +22,7 @@ namespace interface {
|
||||
* - Implements the Singleton pattern
|
||||
* - Handle timeouts (hold, decrement, re-inject)
|
||||
*/
|
||||
class XFTimeoutManager
|
||||
{
|
||||
class XFTimeoutManager {
|
||||
public:
|
||||
virtual ~XFTimeoutManager() = default;
|
||||
|
||||
|
@ -15,12 +15,35 @@ using Mutex = interface::XFMutex; // Rename XFMutex interface class to Mut
|
||||
// Note: The implementation is done here because only in this file the real XFTimeoutManager
|
||||
// class is known (port specific class). An instance of the XFTimeoutManager class is
|
||||
// returned by the 'interface::XFTimeoutManager' class.
|
||||
interface::XFTimeoutManager * interface::XFTimeoutManager::getInstance()
|
||||
{
|
||||
interface::XFTimeoutManager * interface::XFTimeoutManager::getInstance() {
|
||||
static ::XFTimeoutManager timeoutManager;
|
||||
return &timeoutManager;
|
||||
}
|
||||
|
||||
// TODO: Implement code for XFTimeoutManager class
|
||||
|
||||
XFTimeoutManager::XFTimeoutManager() {
|
||||
|
||||
}
|
||||
|
||||
XFTimeoutManager::~XFTimeoutManager() {
|
||||
|
||||
}
|
||||
|
||||
void XFTimeoutManager::start(std::function<void (uint32_t)> startTimeoutManagerTimer) {
|
||||
startTimeoutManagerTimer(tickInterval_);
|
||||
}
|
||||
|
||||
void XFTimeoutManager::scheduleTimeout(int32_t timeoutId, int32_t interval, interface::XFBehavior *pBehavior) {
|
||||
::XFTimeout* timeout = new XFTimeout(timeoutId, interval, pBehavior);
|
||||
timeouts_.push_front(timeout);
|
||||
}
|
||||
|
||||
int32_t timeoutIdComparison;
|
||||
bool myPredicate(XFTimeout* timeout) {return (timeout->getId()==timeoutIdComparison);}
|
||||
void XFTimeoutManager::unscheduleTimeout(int32_t timeoutId, interface::XFBehavior *pBehavior) {
|
||||
timeoutIdComparison = timeoutId;
|
||||
timeouts_.remove_if(myPredicate);
|
||||
}
|
||||
|
||||
#endif // USE_XF_COMMON_TIMEOUTMANAGER_CLASS
|
||||
|
Reference in New Issue
Block a user