1 #ifndef ERROR_HANDLER_MA_RULE_ENGINE_H
2 #define ERROR_HANDLER_MA_RULE_ENGINE_H
4 #include "ErrorHandler/MessageAnalyzer/ma_condition.h"
5 #include "ErrorHandler/MessageAnalyzer/ma_participants.h"
6 #include "ErrorHandler/MessageAnalyzer/ma_rule.h"
7 #include "ErrorHandler/MessageAnalyzer/ma_types.h"
9 #include <boost/thread.hpp>
10 #include "ErrorHandler/MessageAnalyzer/ma_timing_event.h"
17 namespace errorhandler {
23 ma_rule_engine(fhicl::ParameterSet
const& pset, alarm_fn_t alarm, cond_match_fn_t cond_match);
29 size_t cond_size()
const {
return cmap.size(); }
30 size_t rule_size()
const {
return rmap.size(); }
32 const std::vector<std::string>& cond_names()
const {
return cnames; }
33 const std::vector<std::string>& rule_names()
const {
return rnames; }
35 bool is_EHS()
const {
return EHS; }
39 get_configuration()
const
46 cond_description(std::string
const& name)
const
48 return find_cond_by_name(name).description();
52 cond_sources(std::string
const& name)
const
54 return find_cond_by_name(name).sources_str();
58 cond_regex(std::string
const& name)
const
60 return find_cond_by_name(name).regex();
64 cond_msg_count(std::string
const& name)
const
66 return find_cond_by_name(name).get_msg_count();
71 rule_description(std::string
const& name)
const
73 return find_rule_by_name(name).description();
77 rule_expr(std::string
const& name)
const
79 return find_rule_by_name(name).cond_expr();
82 const std::vector<std::string>&
83 rule_cond_names(std::string
const& name)
const
85 return find_rule_by_name(name).cond_names();
89 rule_alarm_count(std::string
const& name)
const
91 return find_rule_by_name(name).get_alarm_count();
95 void enable_rule(std::string
const& name,
bool flag)
97 find_rule_by_name(name).enable(flag);
101 void enable_EHS(
bool flag)
107 void reset_rule(std::string
const& name)
109 find_rule_by_name(name).reset();
114 for (rule_map_t::iterator it = rmap.begin(); it != rmap.end(); ++it)
119 void reset_cond(std::string
const& name)
121 find_cond_by_name(name).reset();
126 for (cond_map_t::iterator it = cmap.begin(); it != cmap.end(); ++it)
138 void add_participant_group(std::string
const& group)
140 ma_participants::instance().add_group(group);
143 void add_participant_group(std::string
const& group,
size_t size)
145 ma_participants::instance().add_group(group, size);
148 void add_participant(std::string
const& group, std::string
const& app)
150 ma_participants::instance().add_participant(group, app);
153 void add_participant(std::string
const& app)
155 ma_participants::instance().add_participant(app);
158 size_t get_group_participant_count(std::string
const& group)
const
160 return ma_participants::instance().get_group_participant_count(group);
163 size_t get_participant_count()
const
165 return ma_participants::instance().get_participant_count();
176 void merge_notify_list(notify_list_t& n_list, conds_t
const& c_list, notify_t type);
179 void evaluate_rules_domain(notify_list_t& notify_domain);
180 void evaluate_rules(notify_list_t& notify_status);
183 const ma_condition& find_cond_by_name(std::string
const& name)
const;
184 ma_condition& find_cond_by_name(std::string
const& name);
186 const ma_rule& find_rule_by_name(std::string
const& name)
const;
187 ma_rule& find_rule_by_name(std::string
const& name);
191 fhicl::ParameterSet pset;
195 std::vector<std::string> cnames;
199 std::vector<std::string> rnames;
203 cond_match_fn_t cond_match_fn;
209 boost::thread event_worker_t;
Qt wrapper around MessageFacility message