1 #ifndef ERROR_HANDLER_MA_RULE_ENGINE_H
2 #define ERROR_HANDLER_MA_RULE_ENGINE_H
4 #include "ErrorHandler/MessageAnalyzer/ma_types.h"
5 #include "ErrorHandler/MessageAnalyzer/ma_condition.h"
6 #include "ErrorHandler/MessageAnalyzer/ma_rule.h"
7 #include "ErrorHandler/MessageAnalyzer/ma_participants.h"
9 #include "ErrorHandler/MessageAnalyzer/ma_timing_event.h"
10 #include <boost/thread.hpp>
18 namespace errorhandler {
27 , cond_match_fn_t cond_match );
33 size_t cond_size()
const {
return cmap.size(); }
34 size_t rule_size()
const {
return rmap.size(); }
36 const std::vector<std::string> & cond_names()
const {
return cnames; }
37 const std::vector<std::string> & rule_names()
const {
return rnames; }
39 bool is_EHS()
const {
return EHS; }
43 get_configuration()
const
48 cond_description( std::string
const & name )
const
49 {
return find_cond_by_name(name).description(); }
52 cond_sources ( std::string
const & name )
const
53 {
return find_cond_by_name(name).sources_str(); }
56 cond_regex ( std::string
const & name )
const
57 {
return find_cond_by_name(name).regex(); }
60 cond_msg_count ( std::string
const & name )
const
61 {
return find_cond_by_name(name).get_msg_count(); }
65 rule_description( std::string
const & name )
const
66 {
return find_rule_by_name(name).description(); }
69 rule_expr ( std::string
const & name )
const
70 {
return find_rule_by_name(name).cond_expr(); }
72 const std::vector<std::string> &
73 rule_cond_names( std::string
const & name )
const
74 {
return find_rule_by_name(name).cond_names(); }
77 rule_alarm_count ( std::string
const & name )
const
78 {
return find_rule_by_name(name).get_alarm_count(); }
81 void enable_rule( std::string
const & name,
bool flag )
82 { find_rule_by_name(name).enable(flag); }
85 void enable_EHS(
bool flag )
89 void reset_rule( std::string
const & name )
90 { find_rule_by_name(name).reset(); }
93 {
for(rule_map_t::iterator it=rmap.begin(); it!=rmap.end(); ++it)
97 void reset_cond( std::string
const & name )
98 { find_cond_by_name(name).reset(); }
101 {
for(cond_map_t::iterator it=cmap.begin(); it!=cmap.end(); ++it)
102 it->second.reset(); }
106 { reset_conds(); reset_rules(); }
109 void add_participant_group( std::string
const & group )
110 { ma_participants::instance().add_group( group ); }
112 void add_participant_group( std::string
const & group,
size_t size )
113 { ma_participants::instance().add_group( group, size ); }
115 void add_participant( std::string
const & group, std::string
const & app )
116 { ma_participants::instance().add_participant( group, app ); }
118 void add_participant( std::string
const & app )
119 { ma_participants::instance().add_participant( app ); }
121 size_t get_group_participant_count( std::string
const & group )
const
122 {
return ma_participants::instance().get_group_participant_count(group); }
124 size_t get_participant_count( )
const
125 {
return ma_participants::instance().get_participant_count(); }
134 void event_worker( );
137 void merge_notify_list( notify_list_t & n_list
138 , conds_t
const & c_list
142 void evaluate_rules_domain( notify_list_t & notify_domain );
143 void evaluate_rules( notify_list_t & notify_status );
146 const ma_condition & find_cond_by_name( std::string
const & name )
const;
147 ma_condition & find_cond_by_name( std::string
const & name );
149 const ma_rule & find_rule_by_name( std::string
const & name )
const;
150 ma_rule & find_rule_by_name( std::string
const & name );
155 fhicl::ParameterSet pset;
159 std::vector<std::string> cnames;
163 std::vector<std::string> rnames;
167 cond_match_fn_t cond_match_fn;
173 boost::thread event_worker_t;
Qt wrapper around MessageFacility message