From 20fd0631c6231728cef5283fe7e364820b9291fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Heredero?= Date: Sat, 21 Oct 2023 13:25:40 +0200 Subject: [PATCH] algo work on test 1 --- readme.md | 11 +++++++++-- .../xf/port/common/timeoutmanager.cpp | 18 +++++++++--------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/readme.md b/readme.md index 6bf7691..b499351 100644 --- a/readme.md +++ b/readme.md @@ -15,7 +15,8 @@ start :rTime = 0 relInterval = 0 -isEnd = it == list.end(); +isEnd = it == list.end() +lTime = 0; if (!isEnd) then (not end) :relInterval = it.getRelTicks() rTime += relInterval; @@ -24,12 +25,18 @@ if (!isEnd) then (not end) :isEnd = (++it == list.end()); if (!isEnd) then (not end) :relInterval = it.getRelTicks() + lTime = rTime rTime += relInterval; endif endwhile endif -: insert ; +if (!isEnd) then (not end) + : subRelTicks(dTime- lTime); +endif +:it.setRelTicks(dTime - rTime); +:insert(it, timeout); + @enduml diff --git a/src/simplified/xf/port/common/timeoutmanager.cpp b/src/simplified/xf/port/common/timeoutmanager.cpp index f5ec382..dad22b1 100644 --- a/src/simplified/xf/port/common/timeoutmanager.cpp +++ b/src/simplified/xf/port/common/timeoutmanager.cpp @@ -38,20 +38,20 @@ void XFTimeoutManager::addTimeout(XFTimeout *pNewTimeout) { int rTime = 0; int relInterval = 0; bool isEnd = true; - int interval = dTime; + int lTime = 0; this->pMutex_->lock(); TimeoutList::iterator it = this->timeouts_.begin(); isEnd = (it == this->timeouts_.end()); if(!isEnd){ - relInterval = (*it)->getInterval(); + relInterval = (*it)->getRelTicks(); rTime += relInterval; } - while(!isEnd && ( relInterval <= 0 || (rTime > dTime) )) { + while(!isEnd && ( false || (rTime <= dTime) )) { isEnd = (++it == this->timeouts_.end()); - interval = rTime - dTime; + lTime = rTime; if(!isEnd) { relInterval = (*it)->getRelTicks(); rTime += relInterval; @@ -59,9 +59,9 @@ void XFTimeoutManager::addTimeout(XFTimeout *pNewTimeout) { } if(it == this->timeouts_.begin()) - if(!isEnd) (*it)->substractFromRelTicks(interval); - it--; - pNewTimeout->setRelTicks(interval); + if(!isEnd) (*it)->substractFromRelTicks(dTime-lTime); + //it--; + pNewTimeout->setRelTicks(dTime-lTime); this->timeouts_.insert(it, pNewTimeout); this->pMutex_->unlock(); return; @@ -112,12 +112,12 @@ void XFTimeoutManager::tick() { while (!isEmpty && (rTime <= 0) ) { - rTime = timeout->getRelTicks(); - XFDispatcher::getInstance()->pushEvent(timeout); this->timeouts_.pop_front(); + timeout = this->timeouts_.front(); isEmpty = this->timeouts_.empty(); + if(!isEmpty) rTime = timeout->getRelTicks(); }