void LinkTriggerCondition::conditionSatisfied(void *condition) { if (delay > 0) { Thread::start(); } else { notifyConditionObservers(LinkTriggerListener::CONDITION_SATISFIED); } }
void LinkAndCompoundTriggerCondition::conditionSatisfied( void* condition) { vector<LinkCondition*>::iterator i; i = unsatisfiedConditions->begin(); while (i != unsatisfiedConditions->end()) { if ((*i) == (LinkCondition*)condition) { unsatisfiedConditions->erase(i); if (unsatisfiedConditions->empty()) { break; } else { i = unsatisfiedConditions->begin(); } } else { ++i; } } if (unsatisfiedConditions->empty()) { for (i = conditions->begin(); i != conditions->end(); ++i) { unsatisfiedConditions->push_back(*i); } for (i = statements->begin(); i != statements->end(); ++i) { if (!(((LinkStatement*)(*i))->evaluate())) { notifyConditionObservers( LinkTriggerListener::EVALUATION_ENDED); return; } } LinkTriggerCondition::conditionSatisfied(condition); } else { notifyConditionObservers(LinkTriggerListener::EVALUATION_ENDED); } }
void LinkTriggerCondition::run() { if (delay > 0) { ::usleep((long)(delay * 1000)); } notifyConditionObservers(LinkTriggerListener::CONDITION_SATISFIED); }
void LinkCompoundTriggerCondition::evaluationEnded() { notifyConditionObservers(LinkTriggerListener::EVALUATION_ENDED); }
void LinkCompoundTriggerCondition::evaluationStarted() { notifyConditionObservers(LinkTriggerListener::EVALUATION_STARTED); }