Using wait-sets and conditions.
More...
- Create a wait-set
WaitSet waitset = new WaitSet();
- Attach conditions
Condition cond1 = entity.get_statuscondition();
Condition cond2 = reader.create_readcondition(
SampleStateKind.NOT_READ_SAMPLE_STATE,
ViewStateKind.ANY_VIEW_STATE,
InstanceStateKind.ANY_INSTANCE_STATE);
Condition cond3 = new GuardCondition();
try {
waitset.attach_condition(cond1);
waitset.attach_condition(cond2);
waitset.attach_condition(cond3);
} catch (DDS.Exception) {
}
- Wait for a condition to trigger or
timeout, whichever occurs first Duration_t timeout;
timeout.sec = 0;
timeout.nanosec = 1000000;
ConditionSeq active_conditions = new ConditionSeq();
bool is_cond1_triggered = false;
bool is_cond2_triggered = false;
try {
waitset.wait(active_conditions, timeout);
for (int i = 0; i < active_conditions.length; ++i) {
if (active_conditions.get_at(i) == cond1) {
Console.WriteLine("Cond1 was triggered!");
is_cond1_triggered = true;
}
if (active_conditions.get_at(i) == cond2) {
Console.WriteLine("Cond2 was triggered!");
is_cond2_triggered = true;
}
}
if (is_cond1_triggered) {
}
if (is_cond2_triggered) {
}
} catch (DDS.Retcode_Timeout) {
Console.WriteLine(
"Wait timed out!! None of the conditions was triggered.");
} catch (DDS.Exception) {
throw;
}
- Delete the wait-set
waitset.Dispose();
waitset = null;