Condition 代表了一个发生的事件。Condition 接口定义如下:
class Condition{
virtual bool get_trigger_value() const = 0;
};
当事件发生时,接口返回值为 true。
GuardCondition
GuardCondition 是一个手动控制的 Condition 实现。是用方式是将一个 GuardCondition 添加到 WaitSet 上,在合适的机会调用 set_trigger_value
。GuardCondition 的接口定义如下:
class GuardCondition: public Condition {
bool get_trigger_value() const;
ReturnCode_t set_trigger_value(bool value);
};
StatusCondition
StatusCondition 代表了每个 Entity 上发生的事件。接口定义如下:
class StatusCondition: public Condition {
virtual bool get_trigger_value() const override;
ReturnCode_t set_enabled_status(const StatusMask& mask);
const StatusMask& get_enabled_statuses() const;
Entity* get_entity() const;
};
WaitSet
WaitSet 允许程序等待多个 Condition 发生。接口定义如下:
class WaitSet {
ReturnCode_t attach_condition(const Condition& cond);
ReturnCode_t detach_condition(const Condition& cond);
// [IN] active_conditions
ReturnCode_t wait(std::vector<Condition&> &active_conditions, Time: timeout) const;
// [IN] attached_conditions
ReturnCode_t get_conditions(vector<Condition&>& attached_conditions) const;
};