Exemple #1
0
	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);
		}
	}
Exemple #3
0
	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);
	}