some more code on this project ( i don't know what i do )
This commit is contained in:
		@@ -3,4 +3,48 @@
 | 
			
		||||
#include "xf/initialevent.h"
 | 
			
		||||
#include "xf/behavior.h"
 | 
			
		||||
 | 
			
		||||
// TODO: Implement code for XFBehavior class  
 | 
			
		||||
// TODO: Implement code for XFBehavior class
 | 
			
		||||
 | 
			
		||||
XFBehavior::XFBehavior() {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
XFBehavior::~XFBehavior() {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void XFBehavior::startBehavior() {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void XFBehavior::pushEvent(XFEvent *pEvent) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool XFBehavior::deleteOnTerminate() const {
 | 
			
		||||
    return deleteOnTerminate_;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void XFBehavior::setDeleteOnTerminate(bool deleteBehaviour) {
 | 
			
		||||
    deleteOnTerminate_ = deleteBehaviour;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const XFEvent *XFBehavior::getCurrentEvent() const {
 | 
			
		||||
    return pCurrentEvent_;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface::XFDispatcher *XFBehavior::getDispatcher() {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const XFTimeout *XFBehavior::getCurrentTimeout() {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void XFBehavior::setCurrentEvent(const XFEvent *pEvent) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
XFBehavior::TerminateBehavior XFBehavior::process(const XFEvent *pEvent) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -19,12 +19,46 @@ using Mutex = interface::XFMutex;       // Rename XFMutex interface class to Mut
 | 
			
		||||
// Note: The implementation is done here because only in this file the real XFDispatcher
 | 
			
		||||
//       class is known (port specific class). An instance of the XFDispatcher class is
 | 
			
		||||
//       returned by the 'interface::XFDispatcher' class.
 | 
			
		||||
interface::XFDispatcher * interface::XFDispatcher::getInstance()
 | 
			
		||||
{
 | 
			
		||||
interface::XFDispatcher * interface::XFDispatcher::getInstance() {
 | 
			
		||||
    static ::XFDispatcher dispatcher;
 | 
			
		||||
    return &dispatcher;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// TODO: Implement code for XFDispatcher class
 | 
			
		||||
 | 
			
		||||
XFDispatcher::XFDispatcher() {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
XFDispatcher::~XFDispatcher() {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void XFDispatcher::dispatchEvent(const XFEvent *pEvent) const {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void XFDispatcher::pushEvent(XFEvent *pEvent) {
 | 
			
		||||
    events_.push(pEvent);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void XFDispatcher::scheduleTimeout(int timeoutId, int interval, interface::XFBehavior *pBehavior) {
 | 
			
		||||
    XFTimeoutManager* timeoutManager = XFTimeoutManager::getInstance();
 | 
			
		||||
    timeoutManager->scheduleTimeout(timeoutId, interval, pBehavior);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void XFDispatcher::unscheduleTimeout(int timeoutId, interface::XFBehavior *pBehavior) {
 | 
			
		||||
    XFTimeoutManager* timeoutManager = XFTimeoutManager::getInstance();
 | 
			
		||||
    timeoutManager->unscheduleTimeout(timeoutId, pBehavior);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void XFDispatcher::executeOnce() {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int XFDispatcher::execute(const void *param) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif // USE_XF_COMMON_DISPATCHER_CLASS
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,14 @@ interface::XFTimeoutManager * interface::XFTimeoutManager::getInstance() {
 | 
			
		||||
// TODO: Implement code for XFTimeoutManager class
 | 
			
		||||
 | 
			
		||||
XFTimeoutManager::XFTimeoutManager() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void XFTimeoutManager::addTimeout(XFTimeout *pNewTimeout) {
 | 
			
		||||
    timeouts_.push_front(pNewTimeout);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void XFTimeoutManager::returnTimeout(XFTimeout *pTimeout) {
 | 
			
		||||
    timeouts_.remove(pTimeout);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
XFTimeoutManager::~XFTimeoutManager() {
 | 
			
		||||
@@ -36,14 +43,23 @@ void XFTimeoutManager::start(std::function<void (uint32_t)> startTimeoutManagerT
 | 
			
		||||
 | 
			
		||||
void XFTimeoutManager::scheduleTimeout(int32_t timeoutId, int32_t interval, interface::XFBehavior *pBehavior) {
 | 
			
		||||
    ::XFTimeout* timeout = new XFTimeout(timeoutId, interval, pBehavior);
 | 
			
		||||
    timeouts_.push_front(timeout);
 | 
			
		||||
    addTimeout(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);
 | 
			
		||||
    for(XFTimeout* timeout : timeouts_) {
 | 
			
		||||
        bool id = ( timeout->getId() == timeoutId );
 | 
			
		||||
        bool behavior = ( timeout->getBehavior() == pBehavior);
 | 
			
		||||
        if( id && behavior ) {
 | 
			
		||||
            timeouts_.remove(timeout);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void XFTimeoutManager::tick() {
 | 
			
		||||
    for(XFTimeout* timeout : timeouts_) {
 | 
			
		||||
        timeout->substractFromRelTicks(tickInterval_);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif // USE_XF_COMMON_TIMEOUTMANAGER_CLASS
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user