somme comments

This commit is contained in:
Rémi Heredero 2023-10-21 18:28:47 +02:00
parent c1b4baeb2e
commit 68fd8440fc

View File

@ -16,6 +16,12 @@ void XFBehavior::startBehavior() {
GEN(XFInitialEvent()); GEN(XFInitialEvent());
} }
/**
* @brief Pushes the given event to the dispatcher.
*
* If the event has no behavior assigned, the behavior of this object is assigned.
* @param pEvent Event to push to the dispatcher.
*/
void XFBehavior::pushEvent(XFEvent *pEvent) { void XFBehavior::pushEvent(XFEvent *pEvent) {
if(pEvent->getBehavior()==nullptr) { if(pEvent->getBehavior()==nullptr) {
pEvent->setBehavior(this); pEvent->setBehavior(this);
@ -39,6 +45,13 @@ interface::XFDispatcher *XFBehavior::getDispatcher() {
return interface::XFDispatcher::getInstance(); return interface::XFDispatcher::getInstance();
} }
/**
* @brief Returns a reference to the actually processed timeout.
*
* Will work only if the current event is of type IXFEvent::Timeout.
*
* @return Pointer to the currently processed timeout or nullptr if the current event is not a timeout.
*/
const XFTimeout *XFBehavior::getCurrentTimeout() { const XFTimeout *XFBehavior::getCurrentTimeout() {
if(pCurrentEvent_->getEventType() == XFEvent::Timeout) { if(pCurrentEvent_->getEventType() == XFEvent::Timeout) {
return (XFTimeout*) this->pCurrentEvent_; return (XFTimeout*) this->pCurrentEvent_;
@ -51,13 +64,33 @@ void XFBehavior::setCurrentEvent(const XFEvent *pEvent) {
this->pCurrentEvent_ = pEvent; this->pCurrentEvent_ = pEvent;
} }
/**
* @brief Processes the given event.
*
* The dispatcher calls this method every time a new event
* or timeout arrives. The process method stores the actual
* event using the #_pCurrentEvent and then calls
* processEvent().
*
* In case you intend to call process() inside your state machine you
* are doing something wrong! Call GEN() or pushEvent() instead!
*
* @param pEvent Event to process
* @return if the behavior is terminated (basically a boolean)
*/
XFBehavior::TerminateBehavior XFBehavior::process(const XFEvent *pEvent) { XFBehavior::TerminateBehavior XFBehavior::process(const XFEvent *pEvent) {
this->setCurrentEvent(pEvent); this->setCurrentEvent(pEvent);
// Get status of the event processing
XFEventStatus status = XFEventStatus::Unknown; XFEventStatus status = XFEventStatus::Unknown;
status = this->processEvent(); status = this->processEvent();
// Check if event was consumed and if it should be deleted
if(status == XFEventStatus::Consumed && pEvent->deleteAfterConsume()) { if(status == XFEventStatus::Consumed && pEvent->deleteAfterConsume()) {
delete pEvent; delete pEvent;
} }
// Check if the behavior is terminated and return the result
XFBehavior::TerminateBehavior terminateBehavior = false; XFBehavior::TerminateBehavior terminateBehavior = false;
if(status == XFEventStatus::Terminate) { if(status == XFEventStatus::Terminate) {
terminateBehavior = true; terminateBehavior = true;