WaitSet waitset = new WaitSet();
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);
timeout
, whichever occurs first Duration_t timeout = new Duration_t(0, 1000000); // 1ms ConditionSeq active_conditions = new ConditionSeq(); // list of active conditions boolean is_cond1_triggered = false; boolean is_cond2_triggered = false; try { waitset.wait(active_conditions, timeout); // check if "cond1" or "cond2" are triggered: 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) { // ... do something because "cond1" was triggered ... } if (is_cond2_triggered) { // ... do something because "cond2" was triggered ... } } catch (RETCODE_TIMEOUT timed_out) { // timeout! System.out.println( "Wait timed out!! None of the conditions was triggered."); } catch (RETCODE_ERROR ex) { // ... check for cause of failure throw ex; }
waitset.delete();
waitset = null;
// let the wait set be garbage collected