LCOV - code coverage report
Current view: top level - /opt/artdaq/srcs/artdaq-mfextensions/ErrorHandler - MsgAnalyzerDlg.h (source / functions) Coverage Total Hit
Test: artdaq.info.cleaned Lines: 0.0 % 8 0
Test Date: 2025-09-04 00:45:34 Functions: 0.0 % 2 0

            Line data    Source code
       1              : #ifndef _NOVA_MSG_ANALYZER_DLG_H_
       2              : #define _NOVA_MSG_ANALYZER_DLG_H_
       3              : 
       4              : #include "ui_MsgAnalyzerDlg.h"
       5              : 
       6              : #include "ErrorHandler/Components/NodeInfo.h"
       7              : #include "ErrorHandler/Components/qt_rule_engine.h"
       8              : #include "ErrorHandler/MessageAnalyzer/ma_utils.h"
       9              : #include "mfextensions/Receivers/ReceiverManager.hh"
      10              : 
      11              : #include <QtCore/QMutex>
      12              : #include <QtCore/QSignalMapper>
      13              : #include <QtWidgets/QMenu>
      14              : 
      15              : #include <boost/regex.hpp>
      16              : #include <boost/shared_ptr.hpp>
      17              : 
      18              : #include <list>
      19              : #include <map>
      20              : #include <string>
      21              : 
      22              : namespace novadaq {
      23              : namespace errorhandler {
      24              : 
      25              : typedef boost::regex regex_t;
      26              : typedef std::vector<regex_t> vregex_t;
      27              : 
      28              : typedef std::map<std::string, NodeInfo *> map_t;
      29              : 
      30              : enum display_field_t
      31              : {
      32              :         DESCRIPTION,
      33              :         EXPRESSION
      34              : };
      35              : 
      36              : class MsgAnalyzerDlg : public QDialog, private Ui::MsgAnalyzerDlg
      37              : {
      38              :         Q_OBJECT
      39              : 
      40              : public:
      41              :         MsgAnalyzerDlg(std::string const &cfgfile, int p, QDialog *parent = 0);
      42              : 
      43              :         virtual ~MsgAnalyzerDlg();
      44              : 
      45              : protected:
      46              :         void closeEvent(QCloseEvent *event) final;
      47              : 
      48              : private slots:
      49              : 
      50              :         void onNewMsg(qt_mf_msg const &mfmsg);
      51              :         void onNewSysMsg(sev_code_t, QString const &msg);
      52              : 
      53              :         void onNewAlarm(QString const &rule_name, QString const &msg);
      54              :         void onConditionMatch(QString const &name);
      55              : 
      56              :         void reset();
      57              :         void exit();
      58              : 
      59              :         void onNodeClicked(QListWidgetItem *item);
      60              : 
      61              :         void show_main_context_menu(const QPoint &pos);
      62              :         void show_dcm_context_menu(const QPoint &pos);
      63              :         void show_evb_context_menu(const QPoint &pos);
      64              : 
      65              :         void context_menu_reset();
      66              :         void context_menu_warning();
      67              :         void context_menu_error();
      68              : 
      69              :         void rule_enable();
      70              :         void rule_disable();
      71              :         void rule_reset_selection();
      72              :         void reset_rule(int idx);
      73              :         void reset_rule(QString);
      74              : 
      75            0 :         void onRuleDesc(bool checked)
      76              :         {
      77            0 :                 rule_display = checked ? DESCRIPTION : EXPRESSION;
      78            0 :                 updateRuleDisplay();
      79            0 :         }
      80            0 :         void onCondDesc(bool checked)
      81              :         {
      82            0 :                 cond_display = checked ? DESCRIPTION : EXPRESSION;
      83            0 :                 updateCondDisplay();
      84            0 :         }
      85              : 
      86              :         void onEstablishPartition(int partition);
      87              :         void onSetParticipants(QVector<QString> const &dcm, QVector<QString> const &bnevb);
      88              : 
      89              : private:
      90              :         void reset_node_status();
      91              :         void reset_rule_engine();
      92              : 
      93              :         void initNodeStatus();
      94              :         void initParticipants();
      95              :         void initRuleEngineTable();
      96              :         void updateRuleDisplay();
      97              :         void updateCondDisplay();
      98              : 
      99              :         void publishMessage(message_type_t type, QString const &msg) const;
     100              : 
     101              :         void show_context_menu(QPoint const &pos, QListWidget *list);
     102              :         bool check_node_aow(std::string const &key);
     103              :         bool check_node_aoe(std::string const &key);
     104              : 
     105              : private:
     106              :         // data member
     107              :         fhicl::ParameterSet pset;
     108              :         qt_rule_engine engine;
     109              :         mfviewer::ReceiverManager receiver;
     110              : 
     111              :         map_t map;
     112              :         int nmsgs;
     113              : 
     114              :         // number of rules/conditions
     115              :         size_t rule_size;
     116              :         size_t cond_size;
     117              : 
     118              :         // rule/cond name --> row index map
     119              :         std::map<QString, int> rule_idx_map;
     120              :         std::map<QString, int> cond_idx_map;
     121              : 
     122              :         // whether to show description or expression
     123              :         display_field_t rule_display;
     124              :         display_field_t cond_display;
     125              : 
     126              :         // map lock
     127              :         QMutex map_lock;
     128              : 
     129              :         // signal mapper
     130              :         QSignalMapper sig_mapper;
     131              : 
     132              :         // conext menu
     133              :         QMenu *context_menu;
     134              :         QMenu *rule_act_menu;
     135              :         QMenu *cond_act_menu;
     136              : 
     137              :         // context menu actions
     138              :         QAction *act_reset;
     139              :         QAction *act_warning;
     140              :         QAction *act_error;
     141              :         QAction *act_rule_enable;
     142              :         QAction *act_rule_disable;
     143              :         QAction *act_rule_reset;
     144              : 
     145              :         // QListWidgetItem related to the context menu
     146              :         QListWidgetItem *list_item;
     147              : 
     148              :         // Node Status related members
     149              :         bool aow_any;    // alarm on warning on any nodes
     150              :         bool aoe_any;    // alarm on error on any nodes
     151              :         vregex_t e_aow;  // regex expressions for aow
     152              :         vregex_t e_aoe;  // regex expressions for aoe
     153              :         boost::smatch what_;
     154              : };
     155              : 
     156              : }  // end of namespace errorhandler
     157              : }  // end of namespace novadaq
     158              : 
     159              : #endif
        

Generated by: LCOV version 2.0-1