cc_tools_qt
Common Environment for Protocol Analysis.
Loading...
Searching...
No Matches
ToolsMsgMgrImpl.h
1//
2// Copyright 2014 - 2025 (C). Alex Robenko. All rights reserved.
3//
4
5// This file is free software: you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// This program is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18
19#pragma once
20
21#include "cc_tools_qt/ToolsMsgMgr.h"
22
23#include <QtCore/QObject>
24
25#include <vector>
26
27namespace cc_tools_qt
28{
29
30class ToolsMsgMgrImpl : public QObject
31{
32 Q_OBJECT
33public:
34 using MsgType = ToolsMsgMgr::MsgType;
35
36 ToolsMsgMgrImpl();
37 ~ToolsMsgMgrImpl() noexcept;
38
39 void start();
40 void stop();
41 void clear();
42
43 ToolsSocketPtr getSocket() const;
44 ToolsProtocolPtr getProtocol() const;
45 void setRecvEnabled(bool enabled);
46
47 void deleteMsg(ToolsMessagePtr msg);
48 void deleteMsgs(const ToolsMessagesList& msgs);
49 void deleteAllMsgs()
50 {
51 m_allMsgs.clear();
52 }
53
54 void sendMsgs(ToolsMessagesList&& msgs);
55
56 const ToolsMessagesList& getAllMsgs() const
57 {
58 return m_allMsgs;
59 }
60
61 void addMsgs(const ToolsMessagesList& msgs, bool reportAdded);
62
63 void setSocket(ToolsSocketPtr socket);
64 void setProtocol(ToolsProtocolPtr protocol);
65 void addFilter(ToolsFilterPtr filter);
66
67 using MsgAddedCallbackFunc = ToolsMsgMgr::MsgAddedCallbackFunc;
68 using ErrorReportCallbackFunc = ToolsMsgMgr::ErrorReportCallbackFunc;
69 using SocketConnectionStatusReportCallbackFunc = ToolsMsgMgr::SocketConnectionStatusReportCallbackFunc;
70
71 template <typename TFunc>
72 void setMsgAddedCallbackFunc(TFunc&& func)
73 {
74 m_msgAddedCallback = std::forward<TFunc>(func);
75 }
76
77 template <typename TFunc>
78 void setErrorReportCallbackFunc(TFunc&& func)
79 {
80 m_errorReportCallback = std::forward<TFunc>(func);
81 }
82
83 template <typename TFunc>
84 void setSocketConnectionStatusReportCallbackFunc(TFunc&& func)
85 {
86 m_socketConnectionStatusReportCallback = std::forward<TFunc>(func);
87 }
88
89private slots:
90 void socketErrorReport(const QString& msg);
91 void socketConnectionReport(bool connected);
92 void socketDataReceived(ToolsDataInfoPtr dataInfoPtr);
93 void filterErrorReport(const QString& msg);
94 void filterDataToSendReport(ToolsDataInfoPtr dataInfoPtr);
95 void protocolErrorReport(const QString& msg);
96 void protocolSendMessageReport(ToolsMessagePtr msg);
97
98private:
99 using MsgNumberType = unsigned long long;
100 using FiltersList = std::vector<ToolsFilterPtr>;
101
102 void updateInternalId(ToolsMessage& msg);
103 void reportMsgAdded(ToolsMessagePtr msg);
104 void reportError(const QString& error);
105 void reportSocketConnectionStatus(bool connected);
106
107 ToolsMessagesList m_allMsgs;
108 bool m_recvEnabled = false;
109
110 ToolsSocketPtr m_socket;
111 ToolsProtocolPtr m_protocol;
112 FiltersList m_filters;
113 MsgNumberType m_nextMsgNum = 1;
114 bool m_running = false;
115
116 MsgAddedCallbackFunc m_msgAddedCallback;
117 ErrorReportCallbackFunc m_errorReportCallback;
118 SocketConnectionStatusReportCallbackFunc m_socketConnectionStatusReportCallback;
119};
120
121} // namespace cc_tools_qt
Main namespace for all classes / functions of the shared library.
std::shared_ptr< ToolsDataInfo > ToolsDataInfoPtr
Pointer to ToolsDataInfo.
Definition ToolsDataInfo.h:57
std::shared_ptr< ToolsFilter > ToolsFilterPtr
Pointer to ToolsFilter object.
Definition ToolsFilter.h:179
std::shared_ptr< ToolsProtocol > ToolsProtocolPtr
Pointer to ToolsProtocol object.
Definition ToolsProtocol.h:233
std::shared_ptr< ToolsSocket > ToolsSocketPtr
Pointer to ToolsSocket object.
Definition ToolsSocket.h:217
std::shared_ptr< ToolsMessage > ToolsMessagePtr
Smart pointer to ToolsMessage.
Definition ToolsMessage.h:163