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