21#include "cc_tools_qt/ToolsMessageBase.h"
22#include "cc_tools_qt/ToolsProtMsgInterface.h"
23#include "cc_tools_qt/property/message.h"
25#include <QtCore/QString>
36template <
typename TMsgBase,
typename... TOpts>
37class ToolInvalidMessageImpl :
public
40 comms::option::def::NoIdImpl,
41 comms::option::def::ZeroFieldsImpl,
42 comms::option::def::MsgType<ToolInvalidMessageImpl<TMsgBase, TOpts...>>
49template<
typename TBase>
50class ToolsInvalidMessage :
public
53 details::ToolInvalidMessageImpl,
54 ToolsInvalidMessage<TBase>
60 details::ToolInvalidMessageImpl,
61 ToolsInvalidMessage<TBase>
65 using FieldsList =
typename Base::FieldsList;
66 virtual ~ToolsInvalidMessage() noexcept = default;
69 virtual const
char* nameImpl()
const override
71 if (property::message::ToolsMsgTransportMsg().getFrom(*
this)) {
72 static const char* InvalidMsgStr =
"???";
76 static const char* GarbageStr =
"-#-";
80 virtual bool isValidImpl()
const override
85 virtual qlonglong numericIdImpl()
const override
90 virtual void resetImpl()
override
92 [[maybe_unused]]
static constexpr bool Must_not_be_called =
false;
93 assert(Must_not_be_called);
98 [[maybe_unused]]
static constexpr bool Must_not_be_called =
false;
99 assert(Must_not_be_called);
103 virtual DataSeq encodeDataImpl()
const override
105 ToolsMessagePtr rawDataMsg = property::message::ToolsMsgRawDataMsg().getFrom(*
this);
111 return rawDataMsg->encodeData();
114 virtual DataSeq encodeFramedImpl([[maybe_unused]] ToolsFrame& frame)
const override
116 return encodeDataImpl();
119 virtual typename Base::Ptr cloneImpl()
const override
121 ToolsMessagePtr rawDataMsg = property::message::ToolsMsgRawDataMsg().getFrom(*
this);
122 auto ptr = Base::cloneImpl();
123 if (ptr && rawDataMsg) {
125 property::message::ToolsMsgRawDataMsg().setTo(std::move(p), *ptr);
131 virtual FieldsList transportFieldsImpl()
override