all test done
This commit is contained in:
@ -27,6 +27,7 @@ interface::XFDispatcher * interface::XFDispatcher::getInstance() {
|
||||
// TODO done: Implement code for XFDispatcher class
|
||||
|
||||
XFDispatcher::XFDispatcher() {
|
||||
this->pMutex_ = interface::XFMutex::create();
|
||||
}
|
||||
|
||||
XFDispatcher::~XFDispatcher() {
|
||||
@ -47,7 +48,9 @@ void XFDispatcher::dispatchEvent(const XFEvent *pEvent) const {
|
||||
|
||||
void XFDispatcher::pushEvent(XFEvent *pEvent) {
|
||||
//Trace::out("[DEBUG] - Push Event");
|
||||
this->pMutex_->lock();
|
||||
events_.push(pEvent, false);
|
||||
this->pMutex_->unlock();
|
||||
}
|
||||
|
||||
void XFDispatcher::scheduleTimeout(int timeoutId, int interval, interface::XFBehavior *pBehavior) {
|
||||
@ -60,13 +63,19 @@ void XFDispatcher::unscheduleTimeout(int timeoutId, interface::XFBehavior *pBeha
|
||||
|
||||
void XFDispatcher::executeOnce() {
|
||||
if(!this->events_.empty()) {
|
||||
dispatchEvent(this->events_.front());
|
||||
|
||||
this->pMutex_->lock();
|
||||
const XFEvent *ev = this->events_.front();
|
||||
this->events_.pop();
|
||||
this->pMutex_->unlock();
|
||||
|
||||
dispatchEvent(ev);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int XFDispatcher::execute(const void *param) {
|
||||
(void) param;
|
||||
while(true){
|
||||
this->executeOnce();
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ XFTimeoutManager::~XFTimeoutManager() {
|
||||
|
||||
void XFTimeoutManager::addTimeout(XFTimeout *pNewTimeout) {
|
||||
this->pMutex_->lock();
|
||||
this->timeouts_.push_front(pNewTimeout);
|
||||
this->timeouts_.push_back(pNewTimeout);
|
||||
this->pMutex_->unlock();
|
||||
|
||||
}
|
||||
@ -89,6 +89,7 @@ void XFTimeoutManager::tick() {
|
||||
XFEvent* ev = *(it);
|
||||
XFDispatcher::getInstance()->pushEvent(ev);
|
||||
it = this->timeouts_.erase(it);
|
||||
it--;
|
||||
}
|
||||
}
|
||||
this->pMutex_->unlock();
|
||||
|
Reference in New Issue
Block a user