1 #ifndef ERROR_HANDLER_MA_RULE_H
2 #define ERROR_HANDLER_MA_RULE_H
5 #include "ErrorHandler/MessageAnalyzer/ma_action.h"
6 #include "ErrorHandler/MessageAnalyzer/ma_boolean_expr.h"
7 #include "ErrorHandler/MessageAnalyzer/ma_condition.h"
8 #include "ErrorHandler/MessageAnalyzer/ma_domain_expr.h"
9 #include "ErrorHandler/MessageAnalyzer/ma_richmsg.h"
10 #include "ErrorHandler/MessageAnalyzer/ma_utils.h"
13 #include <fhiclcpp/ParameterSet.h>
14 #include <boost/shared_ptr.hpp>
21 namespace errorhandler {
28 ma_rule(std::string
const& name, std::string
const& desc,
bool repeat,
int holdoff_time = 0);
35 parse(std::string
const& cond_expr, std::string
const& alarm_message, fhicl::ParameterSet
const& actions, cond_map_t* cond_map_ptr);
61 get_alarm_count()
const {
return alarm_count; }
64 const std::string& name()
const {
return name_; }
65 const std::string& description()
const {
return description_; }
66 const std::string& cond_expr()
const {
return condition_expr; }
67 const std::string& alarm_message()
const {
return alarm_msg.plain_message(); }
69 const std::vector<std::string>& cond_names()
const {
return cond_names_; }
73 enable(
bool flag) { enabled = flag; }
96 insert_condition_ptr(std::string
const& name,
bool primitive);
102 get_cond_idx(std::string
const& name)
const;
106 get_cond(std::string
const& name)
const;
110 get_idx(std::string
const& name)
const;
114 get_cond_size()
const;
119 update_notify_list(std::string
const& name, arg_t arg);
122 cond_vec_t conditions;
123 idx_t conditions_idx;
124 std::vector<bool> primitive_cond;
133 recursive_evaluate(ma_domain& value, ma_domain& alarm, ma_domain
const& domain,
size_t n);
138 boolean_evaluate(ma_domain& value, ma_domain& alarm, ma_domain
const& domain);
141 parse_alarm_message(std::string
const& s);
144 parse_alarm_ref(std::string
const& s);
149 cond_map_t* cond_map;
152 std::string description_;
153 std::string condition_expr;
156 std::vector<std::string> cond_names_;
165 std::map<ma_domain, timeval> alarms;
166 std::map<ma_domain, timeval>::const_iterator itor_last_alarm;
177 typedef boost::shared_ptr<ma_rule> rule_sp;
178 typedef std::map<std::string, ma_rule> rule_map_t;