Heart 1.4.918.d927d9c
Heart is base back end library for your c++ Qt projects.
Loading...
Searching...
No Matches
apiversionparser.h
Go to the documentation of this file.
1//#
2//# Copyright (C) 2022-2025 QuasarApp.
3//# Distributed under the lgplv3 software license, see the accompanying
4//# Everyone is permitted to copy and distribute verbatim copies
5//# of this license document, but changing it is not allowed.
6//#
7
8
9#ifndef APIVERSIONPARSER_H
10#define APIVERSIONPARSER_H
11
12#include "abstractnodeinfo.h"
13#include "iparser.h"
14
15namespace QH {
16
17namespace PKG {
18class APIVersion;
20}
25class HEARTSHARED_EXPORT APIVersionParser: public iParser
26{
27 Q_OBJECT
28public:
30
31 ParserResult parsePackage(const QSharedPointer<PKG::AbstractData> &pkg,
32 const Header &pkgHeader,
33 AbstractNodeInfo *sender) override;
34 int version() const override;
35 QString parserId() const override;
36
41 QString toString() const override;
42
51 QSharedPointer<PKG::AbstractData>
52 searchPackage(unsigned short cmd,
53 AbstractNodeInfo *sender) const;
54
61 QSharedPointer<iParser> getSelectedApiParser(const QString& apiKey,
63
69 const QSharedPointer<QH::iParser>&
70 addApiParser(const QSharedPointer<QH::iParser>& parserObject);
71
77 QHash<QString, QSharedPointer<QH::iParser>>
78 selectParser(const VersionData& distVersion) const;
79
84 unsigned int parsersTypedCount() const;
85
92 QSharedPointer<QH::iParser> selectParser(unsigned short cmd,
93 AbstractNodeInfo *sender) const;
94
101 QSharedPointer<QH::iParser> selectParser(const QString& parserKey,
102 unsigned short version) const;
103
110 QSharedPointer<QH::iParser> selectParser(const QString& parserKey,
111 AbstractNodeInfo *sender) const;
112
118 unsigned short maximumApiVersion(const QString& apiKey) const;
119
125 unsigned short minimumApiVersion(const QString& apiKey) const;
126
132 bool sendSupportedAPI(AbstractNodeInfo *dist) const;
133
134 unsigned short selectPackageVersion(const VersionData& local, const VersionData& dist);
135
136signals:
137
143 void sigNoLongerSupport(const QString& ApiKey, unsigned short version);
144
145private:
146
147 QSharedPointer<QH::iParser>
148 selectParserImpl(unsigned short cmd, AbstractNodeInfo *sender) const;
149
150 QSharedPointer<QH::iParser>
151 selectParserImpl(const QString& key, AbstractNodeInfo *sender) const;
152
153 bool processAppVersion(const QSharedPointer<PKG::APIVersion> &message,
154 AbstractNodeInfo *sender,
155 const QH::Header &);
156 bool versionDeliveredSuccessful(const QSharedPointer<PKG::VersionIsReceived> &,
157 QH::AbstractNodeInfo *sender,
158 const QH::Header &);
159
160 QHash<QString, QMap<int, QSharedPointer<QH::iParser>>> _apiParsers;
161
162 // This is internal check of registered commands.
163 // works only in debug.
164 bool commandsValidation(const QSharedPointer<iParser> &parserObject);
165};
166}
167#endif // APIVERSIONPARSER_H
int version() const override
version This method return version of parser object
QSharedPointer< PKG::AbstractData > searchPackage(unsigned short cmd, AbstractNodeInfo *sender) const
searchPackage This method search package recursive in all registered pararsers. Searching will be in ...
unsigned short minimumApiVersion(const QString &apiKey) const
minimumApiVersion This method return minimum supported api version of this node.
QHash< QString, QSharedPointer< QH::iParser > > selectParser(const VersionData &distVersion) const
selectParser This method select api parser betwin nodes.
unsigned short maximumApiVersion(const QString &apiKey) const
maximumApiVersion This method return maximum supported api version of this node.
const QSharedPointer< QH::iParser > & addApiParser(const QSharedPointer< QH::iParser > &parserObject)
addApiParser This method add new Api parser for this node.
ParserResult parsePackage(const QSharedPointer< PKG::AbstractData > &pkg, const Header &pkgHeader, AbstractNodeInfo *sender) override
parsePackage This is main method of all childs classes of an AbstractNode class. This method work on ...
APIVersionParser(AbstractNode *node)
void sigNoLongerSupport(const QString &ApiKey, unsigned short version)
sigNoLongerSupport This signal will be emit when node receive incomplite versions.
QSharedPointer< iParser > getSelectedApiParser(const QString &apiKey, QH::AbstractNodeInfo *node) const
getSelectedApiParser This method return apiParser for selected node
unsigned int parsersTypedCount() const
parsersTypedCount This method return count of the parsers types.
QString toString() const override
toString This method show all supported commands and them names.
QString parserId() const override
parserId This is id of the parsers. All parser will be synced betwin nodes by ids.
unsigned short selectPackageVersion(const VersionData &local, const VersionData &dist)
bool sendSupportedAPI(AbstractNodeInfo *dist) const
sendSupportedAPI This method sents all ainformation about suppported api.
The AbstractNodeInfo class contains information about client or server connection and tcp socket of n...
The APIVersion class This is base pacakge class that send information about supported api version on ...
Definition apiversion.h:24
The VersionIsReceived class base class for confirmed versions.
AbstractNode * node() const
Definition iparser.cpp:46
iParser(AbstractNode *parentNode)
Definition iparser.cpp:17
friend class AbstractNode
Definition iparser.h:266
The PKG namesapce - this namespace contains all default packages of the Heart library....
Definition heart.h:211
The QH namespace - QuasarApp Heart namespace. This namespace contains all classes of the Heart librar...
Definition heart.cpp:13
ParserResult
The ParserResult enum. Error - parser detect a errorob package. NotProcessed - the parser does not kn...
Definition iparser.h:35
QHash< QString, DistVersion > VersionData
VersionData This is array of all available apis and supported its versions.
Definition distversion.h:78
The Header struct 32 bytes.
Definition header.h:19