Wireshark 4.7.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
expert_info_model.h
Go to the documentation of this file.
1
12#ifndef EXPERT_INFO_MODEL_H
13#define EXPERT_INFO_MODEL_H
14
15#include <config.h>
16
17#include <QAbstractItemModel>
18#include <QList>
19#include <QMap>
20
21#include <ui/qt/capture_file.h>
22
23#include <epan/expert.h>
24#include <epan/tap.h>
25#include <epan/column-utils.h>
26
28{
29public:
30 ExpertPacketItem(const expert_info_t& expert_info, column_info *cinfo, ExpertPacketItem* parent);
31 virtual ~ExpertPacketItem();
32
33 unsigned int packetNum() const { return packet_num_; }
34 int group() const { return group_; }
35 int severity() const { return severity_; }
36 int hfId() const { return hf_id_; }
37 QString protocol() const { return protocol_; }
38 QString summary() const { return summary_; }
39 QString colInfo() const { return info_; }
40
41 static QString groupKey(bool group_by_summary, int severity, int group, QString protocol, int expert_hf);
42 QString groupKey(bool group_by_summary);
43
44 void appendChild(ExpertPacketItem* child, QString hash);
45 ExpertPacketItem* child(int row);
46 ExpertPacketItem* child(QString hash);
47 int childCount() const;
48 int row() const;
49 ExpertPacketItem* parentItem();
50
51private:
52 unsigned int packet_num_;
53 int group_;
54 int severity_;
55 int hf_id_;
56 int row_;
57 // Half-hearted attempt at conserving memory. If this isn't sufficient,
58 // PacketListRecord interns column strings in a GStringChunk.
59 QByteArray protocol_;
60 QByteArray summary_;
61 QByteArray info_;
62
63 QList<ExpertPacketItem*> childItems_;
64 ExpertPacketItem* parentItem_;
65 QHash<QString, ExpertPacketItem*> hashChild_; //optimization for insertion
66};
67
68class ExpertInfoModel : public QAbstractItemModel
69{
70public:
71 ExpertInfoModel(CaptureFile& capture_file, QObject *parent = 0);
72 virtual ~ExpertInfoModel();
73
74 enum ExpertColumn {
75 colSeverity = 0,
76 colSummary,
77 colGroup,
78 colProtocol,
79 colCount,
80 colPacket,
81 colHf,
82 colLast
83 };
84
85 enum ExpertSeverity {
86 severityError = PI_ERROR,
87 severityWarn = PI_WARN,
88 severityNote = PI_NOTE,
89 severityChat = PI_CHAT,
90 severityComment = PI_COMMENT
91 };
92
93 QModelIndex index(int row, int column,
94 const QModelIndex & = QModelIndex()) const;
95 QModelIndex parent(const QModelIndex &) const;
96#if 0
97 Qt::ItemFlags flags(const QModelIndex &index) const;
98#endif
99 QVariant data(const QModelIndex &index, int role) const;
100
101 int rowCount(const QModelIndex &parent = QModelIndex()) const;
102 int columnCount(const QModelIndex &parent = QModelIndex()) const;
103
104 int numEvents(enum ExpertSeverity severity);
105
106 void clear();
107
108 //GUI helpers
109 void setGroupBySummary(bool group_by_summary);
110
111 // Called from tapPacket
112 void addExpertInfo(const struct expert_info_s& expert_info);
113
114 // Callbacks for register_tap_listener
115 static void tapReset(void *eid_ptr);
116 static tap_packet_status tapPacket(void *eid_ptr, struct _packet_info *pinfo, struct epan_dissect *, const void *data, tap_flags_t flags);
117 static void tapDraw(void *eid_ptr);
118
119private:
120 CaptureFile& capture_file_;
121
122 ExpertPacketItem* createRootItem();
123
124 bool group_by_summary_;
125 ExpertPacketItem* root_;
126
127 QHash<enum ExpertSeverity, int> eventCounts_;
128};
129#endif // EXPERT_INFO_MODEL_H
Definition capture_file.h:21
Definition expert_info_model.h:69
Definition expert_info_model.h:28
#define PI_CHAT
Definition proto.h:934
#define PI_WARN
Definition proto.h:938
#define PI_NOTE
Definition proto.h:936
#define PI_COMMENT
Definition proto.h:932
#define PI_ERROR
Definition proto.h:940
Definition cfile.h:67
Definition packet_info.h:43
Definition column-info.h:62
Definition epan_dissect.h:28
Definition expert.h:27
tap_packet_status
Definition tap.h:25