#include #if (USE_XF_COMMON_TIMEOUTMANAGER_CLASS != 0) #include #include "xf/interface/behavior.h" #include "xf/interface/mutex.h" #include "timeoutmanager.h" using Mutex = interface::XFMutex; // Rename XFMutex interface class to Mutex for easier use. // Implementation of the getInstance() method of the 'interface::XFTimeoutManager' class. // // 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() { static ::XFTimeoutManager timeoutManager; return &timeoutManager; } // TODO: Implement code for XFTimeoutManager class XFTimeoutManager::XFTimeoutManager() { } XFTimeoutManager::~XFTimeoutManager() { } void XFTimeoutManager::start(std::function 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