2020-08-28 18:33:29 +02:00
|
|
|
#include "../fdir/EventCorrelation.h"
|
|
|
|
|
|
|
|
EventCorrelation::EventCorrelation(uint32_t timeout) :
|
|
|
|
eventPending(false) {
|
|
|
|
correlationTimer.setTimeout(timeout);
|
|
|
|
}
|
|
|
|
|
|
|
|
EventCorrelation::~EventCorrelation() {
|
|
|
|
}
|
|
|
|
|
|
|
|
EventCorrelation::State EventCorrelation::doesEventCorrelate() {
|
|
|
|
if (correlationTimer.isBusy()) {
|
|
|
|
eventPending = false;
|
|
|
|
return CORRELATED;
|
|
|
|
} else {
|
|
|
|
if (eventPending) {
|
|
|
|
return ALREADY_STARTED;
|
|
|
|
} else {
|
|
|
|
eventPending = true;
|
|
|
|
correlationTimer.resetTimer();
|
|
|
|
return CORRELATION_STARTED;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool EventCorrelation::isEventPending() {
|
|
|
|
if (eventPending) {
|
|
|
|
eventPending = false;
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
correlationTimer.resetTimer();
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool EventCorrelation::hasPendingEventTimedOut() {
|
|
|
|
if (correlationTimer.hasTimedOut()) {
|
|
|
|
bool temp = eventPending;
|
|
|
|
eventPending = false;
|
|
|
|
return temp;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|