start to implement timeoutmanager
This commit is contained in:
		| @@ -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