change macross system

This commit is contained in:
Andrei Yankovich 2023-05-21 13:42:09 +02:00
parent 88b1d5a620
commit 88f4e92ffd
20 changed files with 40 additions and 65 deletions

View File

@ -12,7 +12,7 @@
#define LOCAL_TEST_PORT TEST_PORT + 4 #define LOCAL_TEST_PORT TEST_PORT + 4
class BigPackage: public QH::PKG::AbstractData { class BigPackage: public QH::PKG::AbstractData {
QH_PACKAGE_AUTO(BigPackage) QH_PACKAGE_AUTO("BigPackage")
public: public:
BigPackage(){ BigPackage(){

View File

@ -48,7 +48,6 @@ public:
void setApisVersions(const VersionData &newApisVersions); void setApisVersions(const VersionData &newApisVersions);
protected: protected:
unsigned int localCode() const override {return typeid(APIVersion).hash_code();}
QDataStream &fromStream(QDataStream &stream) override; QDataStream &fromStream(QDataStream &stream) override;
QDataStream &toStream(QDataStream &stream) const override; QDataStream &toStream(QDataStream &stream) const override;

View File

@ -33,7 +33,6 @@ public:
// StreamBase interface // StreamBase interface
protected: protected:
unsigned int localCode() const override {return typeid(VersionIsReceived).hash_code();}
QDataStream &fromStream(QDataStream &stream) override; QDataStream &fromStream(QDataStream &stream) override;
QDataStream &toStream(QDataStream &stream) const override; QDataStream &toStream(QDataStream &stream) const override;
}; };

View File

@ -24,12 +24,6 @@ bool AbstractData::toPackage(Package &package,
unsigned short reqVersion, unsigned short reqVersion,
unsigned int triggerHash) const { unsigned int triggerHash) const {
if (!checkCmd()) {
QuasarAppUtils::Params::log("You try send pacakge without QH_PACKAGE macross. Please add QH_PACKAGE macros to this class.",
QuasarAppUtils::Error);
return false;
}
if (!isValid()) { if (!isValid()) {
return false; return false;
} }
@ -53,11 +47,6 @@ bool AbstractData::toPackage(Package &package,
return package.isValid(); return package.isValid();
} }
bool AbstractData::checkCmd() const {
unsigned int code = typeid (*this).hash_code();
return code == localCode();
}
bool AbstractData::isValid() const { bool AbstractData::isValid() const {
return true; return true;
} }

View File

@ -24,10 +24,14 @@
#define PROTOCKOL_VERSION_RECEIVED_COMMAND PROTOCKOL_VERSION_COMMAND - 1 #define PROTOCKOL_VERSION_RECEIVED_COMMAND PROTOCKOL_VERSION_COMMAND - 1
/** /**
* @brief QH_PACKAGE This macross prepare data to send and create a global id for package. For get global id use the cmd method. * @brief QH_PACKAGE This macross prepare data to send and create a global id for package.
* For get global id use the cmd method.
* For get quick access for global command use the ClassName::command() method. This method is static. * For get quick access for global command use the ClassName::command() method. This method is static.
* @arg S This is unique id of the pacakge. Shold be some on all your network devices.
* @arg V This is version of the package If you do not use multople versions use 0 or QH_PACKAGE_AUTO instand QH_PACKAGE.
*/ */
#define QH_PACKAGE(X, S, V) \ #define QH_PACKAGE(S, V) \
public: \ public: \
static unsigned short command(){\ static unsigned short command(){\
QByteArray ba = QString(S).toLocal8Bit();\ QByteArray ba = QString(S).toLocal8Bit();\
@ -35,29 +39,28 @@
} \ } \
static QString commandText(){return S;} \ static QString commandText(){return S;} \
static unsigned short version(){ return V; } \ static unsigned short version(){ return V; } \
unsigned short cmd() const override {return X::command();} \ unsigned short cmd() const override {return command();} \
unsigned short ver() const override {return X::version();}; \ unsigned short ver() const override {return V;} \
\
QString cmdString() const override {return X::commandText();} \
protected: \
unsigned int localCode() const override {return typeid(X).hash_code();} \
\ \
QString cmdString() const override {return S;} \
private: private:
/** /**
* @brief QH_PACKAGE_AUTO This macross prepare data to send and create a global id for package. * @brief QH_PACKAGE_AUTO This macross prepare data to send and create a global id for package.
* @arg X This is unique id of the pacakge. shold be some on all your network devices. * @arg S This is unique id of the pacakge. shold be some on all your network devices.
* @note auto pacakge create a 0 version of your package. * @note auto pacakge create a 0 version of your package.
*/ */
#define QH_PACKAGE_AUTO(X) QH_PACKAGE(X,#X, 0) #define QH_PACKAGE_AUTO(S) QH_PACKAGE(S, 0)
/** /**
* @brief QH_PACKAGE_AUTO This macross prepare data to send and create a global id for package. * @brief QH_PACKAGE_ONLY_VERSION This macross can be used only if parrent class alredy has QH_PACKAGE macros and int is some pacakge but with new version.
* @arg X This is unique id of the pacakge. shold be some on all your network devices. * @arg B This is new version of the package.
* @arg V This is version of the yor pacakge.
* @note auto pacakge create a 0 version of your package.
*/ */
#define QH_PACKAGE_AUTO_VER(X, V) QH_PACKAGE(X,#X, V) #define QH_PACKAGE_ONLY_VERSION(V) \
public: \
static unsigned short version(){ return V; } \
unsigned short ver() const override {return V;} \
private: \
namespace QH { namespace QH {
namespace PKG { namespace PKG {
@ -190,23 +193,11 @@ protected:
*/ */
explicit AbstractData(); explicit AbstractData();
/**
* @brief localCode This method return local code
* @return local command of this class. used for check QH_PACKAGE macro before send pacakge.
*/
virtual unsigned int localCode() const = 0;
/** /**
* @brief isOldPackage This method mark package as a old, old pacakges use the Package::calcHashOld method for calculation hash sum of packages. * @brief isOldPackage This method mark package as a old, old pacakges use the Package::calcHashOld method for calculation hash sum of packages.
* @return true if the pacakge is old. * @return true if the pacakge is old.
*/ */
virtual bool isOldPackage() const; virtual bool isOldPackage() const;
private:
/**
* @brief checkCmd This method check QH_PACKAGE macross.
* @return true if the QH_PACKAGE macross is enabled else fal.
*/
bool checkCmd() const;;
}; };

View File

@ -33,7 +33,7 @@ struct ErrorData {
*/ */
class HEARTSHARED_EXPORT BadRequest : public AbstractData class HEARTSHARED_EXPORT BadRequest : public AbstractData
{ {
QH_PACKAGE_AUTO(BadRequest) QH_PACKAGE_AUTO("BadRequest")
public: public:
/** /**

View File

@ -19,7 +19,7 @@ namespace PKG {
*/ */
class HEARTSHARED_EXPORT BigDataBase: public AbstractData class HEARTSHARED_EXPORT BigDataBase: public AbstractData
{ {
QH_PACKAGE_AUTO(BigDataBase) QH_PACKAGE_AUTO("BigDataBase")
public: public:
BigDataBase(); BigDataBase();

View File

@ -27,7 +27,7 @@ namespace PKG {
*/ */
class HEARTSHARED_EXPORT BigDataHeader : public BigDataBase class HEARTSHARED_EXPORT BigDataHeader : public BigDataBase
{ {
QH_PACKAGE_AUTO(BigDataHeader) QH_PACKAGE_AUTO("BigDataHeader")
public: public:
BigDataHeader(); BigDataHeader();

View File

@ -20,7 +20,7 @@ namespace PKG {
*/ */
class HEARTSHARED_EXPORT BigDataPart : public BigDataBase class HEARTSHARED_EXPORT BigDataPart : public BigDataBase
{ {
QH_PACKAGE_AUTO(BigDataPart) QH_PACKAGE_AUTO("BigDataPart")
public: public:
BigDataPart(); BigDataPart();

View File

@ -19,7 +19,7 @@ namespace PKG {
*/ */
class HEARTSHARED_EXPORT BigDataRequest: public BigDataBase class HEARTSHARED_EXPORT BigDataRequest: public BigDataBase
{ {
QH_PACKAGE_AUTO(BigDataRequest) QH_PACKAGE_AUTO("BigDataRequest")
public: public:
BigDataRequest(); BigDataRequest();

View File

@ -19,7 +19,7 @@ namespace PKG {
*/ */
class BigDataWraper: public AbstractData class BigDataWraper: public AbstractData
{ {
QH_PACKAGE_AUTO(BigDataWraper) QH_PACKAGE_AUTO("BigDataWraper")
public: public:
BigDataWraper() = default; BigDataWraper() = default;

View File

@ -27,7 +27,7 @@ namespace PKG {
*/ */
class HEARTSHARED_EXPORT CloseConnection: public AbstractData class HEARTSHARED_EXPORT CloseConnection: public AbstractData
{ {
QH_PACKAGE_AUTO(CloseConnection) QH_PACKAGE_AUTO("CloseConnection")
public: public:
CloseConnection(); CloseConnection();

View File

@ -8,8 +8,7 @@
#ifndef DATAPACK_H #ifndef DATAPACK_H
#define DATAPACK_H #define DATAPACK_H
#include "universaldata.h" #include <abstractdata.h>
namespace QH { namespace QH {
namespace PKG { namespace PKG {
@ -25,7 +24,7 @@ namespace PKG {
template<class Package> template<class Package>
class DataPack final: public AbstractData class DataPack final: public AbstractData
{ {
QH_PACKAGE(DataPack<Package>, Package::commandText() + "Pack", 0) QH_PACKAGE(Package::commandText() + "Pack", Package::version())
public: public:
@ -114,6 +113,15 @@ public:
_data = newToken; _data = newToken;
} }
bool toBytesAdaptiveWithVersion(QByteArray& outputArray, unsigned short version) const override {
if (AbstractData::toBytesAdaptiveWithVersion(outputArray, version)) {
return true;
}
version == ???
}
protected: protected:
QDataStream &fromStream(QDataStream &stream) override { QDataStream &fromStream(QDataStream &stream) override {

View File

@ -18,12 +18,6 @@ class QSqlQuery;
namespace QH { namespace QH {
namespace PKG { namespace PKG {
/**
* The ONLY_DATABASE_PACKAGE macross is base macros for all database objects that do not use stream and network functions.
*/
#define ONLY_DATABASE_PACKAGE QH_PACKAGE(DBObject, "DBObject", 0)
/** /**
* @brief The PrepareResult enum is result of work prepare sql query of dbobjects. * @brief The PrepareResult enum is result of work prepare sql query of dbobjects.
*/ */
@ -95,7 +89,7 @@ typedef QMap<QString, DBVariant> DBVariantMap;
*/ */
class HEARTSHARED_EXPORT DBObject : public AbstractData class HEARTSHARED_EXPORT DBObject : public AbstractData
{ {
QH_PACKAGE_AUTO(DBObject) QH_PACKAGE("DBObject", 0)
public: public:

View File

@ -22,7 +22,7 @@ namespace PKG {
*/ */
class HEARTSHARED_EXPORT DBObjectSet: public DBObject class HEARTSHARED_EXPORT DBObjectSet: public DBObject
{ {
QH_PACKAGE_AUTO(DBObjectSet) QH_PACKAGE_AUTO("DBObjectSet")
public: public:
DBObjectSet(const QString table); DBObjectSet(const QString table);

View File

@ -25,7 +25,6 @@ namespace PKG {
*/ */
class HEARTSHARED_EXPORT DeleteObject: public DBObject, public IToken class HEARTSHARED_EXPORT DeleteObject: public DBObject, public IToken
{ {
QH_PACKAGE_AUTO(DeleteObject)
public: public:
DeleteObject(); DeleteObject();

View File

@ -19,7 +19,6 @@ namespace PKG {
*/ */
class HEARTSHARED_EXPORT GetMaxIntegerId: public DBObject class HEARTSHARED_EXPORT GetMaxIntegerId: public DBObject
{ {
QH_PACKAGE_AUTO(GetMaxIntegerId)
public: public:
/** /**

View File

@ -38,7 +38,6 @@ namespace PKG {
*/ */
class HEARTSHARED_EXPORT GetSingleValue final: public DBObject class HEARTSHARED_EXPORT GetSingleValue final: public DBObject
{ {
QH_PACKAGE_AUTO(GetSingleValue)
public: public:
/** /**

View File

@ -20,7 +20,7 @@ namespace PKG {
*/ */
class HEARTSHARED_EXPORT Ping: public AbstractData class HEARTSHARED_EXPORT Ping: public AbstractData
{ {
QH_PACKAGE_AUTO(Ping) QH_PACKAGE_AUTO("Ping")
public: public:
Ping(); Ping();

View File

@ -32,8 +32,6 @@ namespace PKG {
*/ */
class HEARTSHARED_EXPORT SetSingleValue final: public DBObject class HEARTSHARED_EXPORT SetSingleValue final: public DBObject
{ {
QH_PACKAGE_AUTO(SetSingleValue)
public: public:
/** /**
* @brief SetSingleValue This is default constructor of the update query generator. * @brief SetSingleValue This is default constructor of the update query generator.