Virtual base-class for all rules. More...
#include <indiCompRules.hpp>


Public Types | |
| typedef std::variant< bool, std::string > | boolorerr_t |
| In-band error reporting type. | |
Public Member Functions | |
| bool | isError (boolorerr_t rv) |
| Check if returned value indicates an error. | |
| virtual | ~indiCompRule () |
| Virtual destructor. | |
| virtual ruleComparison | defaultComparison () const |
| Get the default comparison for this rule type. | |
| void | priority (const rulePriority &p, double delay=-1) |
| Set priority of this rule. | |
| const rulePriority & | priority () |
| Get the rule priority. | |
| void | message (const std::string &m) |
| Set the message. | |
| const std::string & | message (bool settime=false) |
| Get the message. | |
| const timespec & | lastMsg () |
| double | sinceLastMsg () |
| Get the time since the last message. | |
| bool | timeToSend () |
| Check if it's time to send a message. | |
| void | messageDelay (double md) |
| Set the message delay. | |
| double | messageDelay () |
| Get the message delay. | |
| void | messageCount (int mc) |
| Set the message count. | |
| int | incMessageCount () |
| Increment the message count. | |
| int | messageCount () |
| Get the message count. | |
| void | comparison (const ruleComparison &c) |
| Set the comparison for this rule. | |
| const ruleComparison & | comparison () |
| Get the rule comparison. | |
| virtual boolorerr_t | valid ()=0 |
| Report whether the rule is valid as configured. | |
| virtual bool | value ()=0 |
| Get the value of this rule. | |
| virtual bool | popRuntimeDiagnostic (std::string &diagnostic) |
| Pop one pending runtime diagnostic, if any. | |
| boolorerr_t | compTxt (const std::string &str1, const std::string &str2) |
| Compare two strings. | |
| boolorerr_t | compSw (const pcf::IndiElement::SwitchStateType &sw1, const pcf::IndiElement::SwitchStateType &sw2) |
| Compare two switches. | |
| boolorerr_t | compNum (const double &num1, const double &num2, const double &tol) |
| Compare two numbers. | |
| boolorerr_t | compBool (const bool &b1, const bool &b2) |
| Compare two booleans. | |
Static Public Attributes | |
| static constexpr double | default_info_msg_delay = 0 |
| static constexpr double | default_caution_msg_delay = 60 |
| static constexpr double | default_warning_msg_delay = 30 |
| static constexpr double | default_alert_msg_delay = 5 |
Protected Attributes | |
| rulePriority | m_priority { rulePriority::none } |
| The reporting priority for this rule. | |
| std::string | m_message |
| The message used for notifications. | |
| timespec | m_lastMsg { 0, 0 } |
| Time the message was last sent. | |
| double | m_messageDelay { 0 } |
| Delay between sending messages. | |
| int | m_messageCount { 0 } |
| Number of times the message has been sent. | |
| ruleComparison | m_comparison { ruleComparison::Eq } |
| The comparison for this rule. | |
Virtual base-class for all rules.
Provides error handling and comparison functions. Derived classes must implement valid() and value().
Definition at line 183 of file indiCompRules.hpp.
| typedef std::variant<bool, std::string> indiCompRule::boolorerr_t |
In-band error reporting type.
Definition at line 187 of file indiCompRules.hpp.
|
inlinevirtual |
Virtual destructor.
Definition at line 218 of file indiCompRules.hpp.
|
inline |
Get the rule comparison.
Definition at line 387 of file indiCompRules.hpp.
References m_comparison.
Referenced by multiSwitchComboRule::multiSwitchComboRule(), and ruleCompRule::ruleCompRule().
|
inline |
Set the comparison for this rule.
| [in] | c | the new comparison |
Definition at line 377 of file indiCompRules.hpp.
References m_comparison.
Referenced by libXWCTest::stateRuleEngineTest::SCENARIO(), SCENARIO(), SCENARIO(), SCENARIO(), and libXWCTest::stateRuleEngineTest::SCENARIO().
|
inline |
Compare two booleans.
| [in] | b1 | the first bool to compare |
| [in] | b2 | the second bool to compare |
Definition at line 533 of file indiCompRules.hpp.
References And, Eq, Imply, m_comparison, Nand, Neq, Nimply, Nor, and Or.
Referenced by ruleCompRule::value().
|
inline |
Compare two numbers.
The comparison is (num1 comp num2), e.g. (num1 < num2). A tolerance is included for floating point equality.
| [in] | num1 | the first number to compare |
| [in] | num2 | the second number to compare |
| [in] | tol | the tolerance for the comparison |
Definition at line 483 of file indiCompRules.hpp.
References Eq, Gt, GtEq, Lt, LtEq, m_comparison, and Neq.
Referenced by numValRule::value(), timeDiffRule::value(), and elCompNumRule::value().
|
inline |
Compare two switches.
Switch comparison can only be Eq or Neq.
| [in] | sw1 | the first switch to compare |
| [in] | sw2 | the first switch to compare |
Definition at line 452 of file indiCompRules.hpp.
References Eq, m_comparison, and Neq.
Referenced by swValRule::value(), and elCompSwRule::value().
|
inline |
Compare two strings.
String comparison can only be Eq or Neq.
| [in] | str1 | the first string to compare |
| [in] | str2 | the second string to compare |
Definition at line 422 of file indiCompRules.hpp.
References Eq, m_comparison, and Neq.
Referenced by txtValRule::value(), elCompTxtRule::value(), and multiSwitchComboRule::value().
|
inlinevirtual |
Get the default comparison for this rule type.
comp is omitted from configuration Reimplemented in multiSwitchComboRule, and ruleCompRule.
Definition at line 226 of file indiCompRules.hpp.
References Eq.
|
inline |
Increment the message count.
Definition at line 364 of file indiCompRules.hpp.
References m_messageCount.
|
inline |
Check if returned value indicates an error.
| [in] | rv | the return value to check |
Definition at line 190 of file indiCompRules.hpp.
Referenced by loadRuleConfig(), ruleCompRule::valid(), numValRule::value(), txtValRule::value(), swValRule::value(), timeDiffRule::value(), elCompNumRule::value(), elCompTxtRule::value(), elCompSwRule::value(), multiSwitchComboRule::value(), and ruleCompRule::value().
|
inline |
Definition at line 298 of file indiCompRules.hpp.
References m_lastMsg.
|
inline |
Get the message.
Optionally sets the message time to now.
| settime | If true m_lastMsg is set to now |
Definition at line 285 of file indiCompRules.hpp.
|
inline |
Set the message.
| [in] | m | the new message |
Definition at line 276 of file indiCompRules.hpp.
References m_message.
Referenced by libXWCTest::stateRuleEngineTest::TEST_CASE().
|
inline |
|
inline |
Set the message count.
| [in] | mc | the new message count |
Definition at line 358 of file indiCompRules.hpp.
References m_messageCount.
Referenced by libXWCTest::stateRuleEngineTest::TEST_CASE().
|
inline |
|
inline |
Set the message delay.
| [in] | md | the new message delay |
Definition at line 346 of file indiCompRules.hpp.
References m_messageDelay.
|
inlinevirtual |
Pop one pending runtime diagnostic, if any.
| [out] | diagnostic | the next pending diagnostic message |
Reimplemented in multiSwitchComboRule, and ruleCompRule.
Definition at line 409 of file indiCompRules.hpp.
Referenced by ruleCompRule::popRuntimeDiagnostic().
|
inline |
Get the rule priority.
Definition at line 270 of file indiCompRules.hpp.
References m_priority.
|
inline |
Set priority of this rule.
Also sets the message delay, to default for priority if not set.
| [in] | p | the new priority |
| [in] | delay | [opt] the message delay, if < 0 the default is used |
Definition at line 234 of file indiCompRules.hpp.
References alert, caution, default_alert_msg_delay, default_caution_msg_delay, default_info_msg_delay, default_warning_msg_delay, info, m_messageDelay, m_priority, and warning.
Referenced by libXWCTest::stateRuleEngineTest::TEST_CASE().
|
inline |
Get the time since the last message.
Definition at line 304 of file indiCompRules.hpp.
References m_lastMsg.
Referenced by timeToSend().
|
inline |
Check if it's time to send a message.
If the message delay is <= 0, this is based on message count (i.e. has it been sent). Otherwise it's based on the time since last sent
Definition at line 319 of file indiCompRules.hpp.
References m_messageCount, m_messageDelay, and sinceLastMsg().
|
pure virtual |
Report whether the rule is valid as configured.
If not valid, the return value is a std::string with the reason. If valid, the return value is a bool set to true.
Implemented in onePropRule, twoPropRule, multiSwitchComboRule, and ruleCompRule.
Referenced by ruleCompRule::valid().
|
pure virtual |
Get the value of this rule.
Implemented in numValRule, txtValRule, swValRule, timeDiffRule, elCompNumRule, elCompTxtRule, elCompSwRule, multiSwitchComboRule, and ruleCompRule.
Referenced by audibleAlerts.personality.Operation::__str__(), audibleAlerts.personality.Transition::compare(), and ruleCompRule::value().
|
staticconstexpr |
Definition at line 198 of file indiCompRules.hpp.
Referenced by priority().
|
staticconstexpr |
Definition at line 196 of file indiCompRules.hpp.
Referenced by priority().
|
staticconstexpr |
Definition at line 195 of file indiCompRules.hpp.
Referenced by priority().
|
staticconstexpr |
Definition at line 197 of file indiCompRules.hpp.
Referenced by priority().
|
protected |
The comparison for this rule.
Definition at line 214 of file indiCompRules.hpp.
Referenced by comparison(), comparison(), compBool(), compNum(), compSw(), compTxt(), and multiSwitchComboRule::valid().
|
protected |
Time the message was last sent.
Definition at line 207 of file indiCompRules.hpp.
Referenced by lastMsg(), message(), and sinceLastMsg().
|
protected |
The message used for notifications.
Definition at line 205 of file indiCompRules.hpp.
|
protected |
Number of times the message has been sent.
Definition at line 211 of file indiCompRules.hpp.
Referenced by incMessageCount(), messageCount(), messageCount(), and timeToSend().
|
protected |
Delay between sending messages.
Definition at line 209 of file indiCompRules.hpp.
Referenced by messageDelay(), messageDelay(), priority(), and timeToSend().
|
protected |
The reporting priority for this rule.
Definition at line 202 of file indiCompRules.hpp.
Referenced by priority(), and priority().