Using wait-sets and conditions.
More...
- Create a wait-set
WaitSet waitset = new WaitSet();
- Attach conditions
Condition cond1 = ...;
Condition cond2 = entity.get_statuscondition();
Condition cond3 = reader.create_readcondition(
SampleStateKind.NOT_READ_SAMPLE_STATE,
ViewStateKind.ANY_VIEW_STATE,
InstanceStateKind.ANY_INSTANCE_STATE);
Condition cond4 = new GuardCondition();
Condition cond5 = ...;
waitset.attach_condition(cond1);
waitset.attach_condition(cond2);
waitset.attach_condition(cond3);
waitset.attach_condition(cond4);
waitset.attach_condition(cond5);
- Wait for a condition to trigger or
timeout, whichever occurs first Duration_t timeout = new Duration_t(0, 1000000);
ConditionSeq active_conditions = new ConditionSeq();
boolean is_cond1_triggered = false;
boolean is_cond2_triggered = false;
try {
waitset.wait(active_conditions, timeout);
for (int i = 0; i < active_conditions.size(); ++i) {
if (active_conditions.get(i) == cond1) {
System.out.println("Cond1 was triggered!");
is_cond1_triggered = true;
}
if (active_conditions.get(i) == cond2) {
System.out.println("Cond2 was triggered!");
is_cond2_triggered = true;
}
}
if (is_cond1_triggered) {
}
if (is_cond2_triggered) {
}
} catch (RETCODE_TIMEOUT timed_out) {
System.out.println(
"Wait timed out!! None of the conditions was triggered.");
} catch (RETCODE_ERROR ex) {
throw ex;
}
- Delete the wait-set
waitset.delete();
waitset = null;