Skip to content

Commit 774bf25

Browse files
authored
Merge pull request #59 from QuasarApp/task_58
Added new crc function
2 parents 880fc43 + 1355e76 commit 774bf25

25 files changed

+670
-24
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ else()
3333
endif()
3434
# Use only for android debug builds with debugging from usb.
3535
option(HEART_STATIC_SSL "This option enable or disabled static link ssl libraryes" OFF)
36+
option(HEART_DEPRECATED_API "This option enable or disabled deprecated command api" OFF)
3637
option(CMAKE_SHARE "This option enable or disabled ssl functions of nodes" OFF)
3738
option(BUILD_SHARED_LIBS "Enable or disable shared libraryes" OFF)
3839

HeartTests/units/bigdatatest.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
class BigPackage: public QH::PKG::AbstractData {
1515
QH_PACKAGE(BigPackage, "BigPackage")
16+
1617
public:
1718
BigPackage(){
1819
data = {};

src/CMakeLists.txt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ set(CMAKE_AUTORCC ON)
1717

1818
add_definitions(-DHEART_LIBRARY)
1919

20+
if (HEART_DEPRECATED_API)
21+
add_definitions(-DHEART_DEPRECATED_API)
22+
endif()
23+
2024
set(SLL_DEFINE "WITHOUT_SSL")
2125

2226
if (HEART_SSL)
@@ -35,9 +39,15 @@ file(GLOB SOURCE_CPP
3539
"private/*.cpp" "private/*.h" "private/*.qrc"
3640
"public/hcrypto/*.cpp" "public/hcrypto/*.h" "public/hcrypto/*.qrc"
3741
"public/hcryptoFeatures/*.cpp" "public/hcryptoFeatures/*.h" "public/hcryptoFeatures/*.qrc"
38-
3942
)
4043

44+
if (NOT HEART_DEPRECATED_API)
45+
file(GLOB SOURCE_CPP_DEPRECATED
46+
"private/*_old.cpp" "private/*_old.h"
47+
)
48+
list(REMOVE_ITEM SOURCE_CPP ${SOURCE_CPP_DEPRECATED})
49+
endif()
50+
4151
set(PUBLIC_INCUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
4252
set(PUBLIC_INCUDE_DIR ${PUBLIC_INCUDE_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/public")
4353
set(PUBLIC_INCUDE_DIR ${PUBLIC_INCUDE_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/public/packages")
@@ -74,6 +84,5 @@ if (HEART_SSL)
7484

7585
endif()
7686

77-
7887
target_include_directories(${PROJECT_NAME} PUBLIC ${PUBLIC_INCUDE_DIR})
7988
target_include_directories(${PROJECT_NAME} PRIVATE ${PRIVATE_INCUDE_DIR})

src/private/abstractnodeparser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ ParserResult AbstractNodeParser::parsePackage(const QSharedPointer<PKG::Abstract
7777
}
7878

7979
int AbstractNodeParser::version() const {
80-
return 0;
80+
return 1;
8181
}
8282

8383
QString AbstractNodeParser::parserId() const {
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
//#
2+
//# Copyright (C) 2022-2022 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+
#include "abstractnodeparser_old.h"
9+
#include "params.h"
10+
#include "abstractnode.h"
11+
#include "qaglobalutils.h"
12+
13+
#include <badrequest.h>
14+
#include <bigdatarequest.h>
15+
#include <closeconnection.h>
16+
#include <ping.h>
17+
18+
namespace QH {
19+
20+
AbstractNodeParserOld::AbstractNodeParserOld(AbstractNode* parentNode): iParser(parentNode) {
21+
debug_assert(parentNode, "Node object can't be null!");
22+
23+
registerPackageTypeOld<PKG::Ping>();
24+
registerPackageTypeOld<PKG::BadRequest>();
25+
registerPackageTypeOld<PKG::CloseConnection>();
26+
}
27+
28+
AbstractNodeParserOld::~AbstractNodeParserOld() {
29+
}
30+
31+
ParserResult AbstractNodeParserOld::parsePackage(const QSharedPointer<PKG::AbstractData> &pkg,
32+
const Header &pkgHeader,
33+
AbstractNodeInfo *sender) {
34+
auto nodePtr = node();
35+
if (!nodePtr) {
36+
return ParserResult::NotProcessed;
37+
}
38+
39+
if (!(sender)) {
40+
QuasarAppUtils::Params::log("sender socket is not valid!",
41+
QuasarAppUtils::Error);
42+
return ParserResult::Error;
43+
}
44+
45+
if (!pkg->isValid()) {
46+
QuasarAppUtils::Params::log("incomming package is not valid!",
47+
QuasarAppUtils::Error);
48+
nodePtr->changeTrust(sender->networkAddress(), CRITICAL_ERROOR);
49+
return ParserResult::Error;
50+
}
51+
52+
if (PKG::Ping::commandOld() == pkg->cmd()) {
53+
auto cmd = pkg.staticCast<PKG::Ping>();
54+
if (!cmd->ansver()) {
55+
cmd->setAnsver(true);
56+
nodePtr->sendData(cmd.data(), sender, &pkgHeader);
57+
}
58+
59+
emit sigPingReceived(cmd);
60+
61+
return ParserResult::Processed;
62+
} else if (PKG::BadRequest::commandOld() == pkg->cmd()) {
63+
auto cmd = static_cast<PKG::BadRequest *>(pkg.data());
64+
65+
emit nodePtr->requestError(cmd->errCode(), cmd->err());
66+
67+
return ParserResult::Processed;
68+
69+
} else if (PKG::CloseConnection::commandOld() == pkg->cmd()) {
70+
if (sender->isLocal()) {
71+
nodePtr->removeNode(sender->networkAddress());
72+
}
73+
return ParserResult::Processed;
74+
}
75+
76+
return ParserResult::NotProcessed;
77+
}
78+
79+
int AbstractNodeParserOld::version() const {
80+
return 0;
81+
}
82+
83+
QString AbstractNodeParserOld::parserId() const {
84+
return "HeartLibAbstractAPI";
85+
}
86+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
//#
2+
//# Copyright (C) 2022-2022 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+
#ifndef ABSTRACTNODEPARSER_OLD_H
9+
#define ABSTRACTNODEPARSER_OLD_H
10+
11+
#include <iparser.h>
12+
#include <ping.h>
13+
14+
namespace QH {
15+
16+
/**
17+
* @brief The AbstractNodeParserOld class is main parser of the abstract level of the hear lib.
18+
* @note This class some as AbstractNodeParser
19+
*/
20+
class AbstractNodeParserOld: public iParser
21+
{
22+
Q_OBJECT
23+
public:
24+
template<class T>
25+
/**
26+
* @brief registerPackageTypeOld This method register package type T.
27+
* This is need to prepare pacakge for parsing in the parsePackage method.
28+
*/
29+
void registerPackageTypeOld() {
30+
_registeredTypes[T::commandOld()] = [](){
31+
return new T();
32+
};
33+
};
34+
35+
AbstractNodeParserOld(AbstractNode *parentNode);
36+
~AbstractNodeParserOld() override;
37+
ParserResult parsePackage(const QSharedPointer<PKG::AbstractData> &pkg,
38+
const Header &pkgHeader,
39+
AbstractNodeInfo *sender) override;
40+
int version() const override;
41+
QString parserId() const override;
42+
43+
signals:
44+
45+
/**
46+
* @brief sigPingReceived This method emited
47+
* @param ping this is received ping object.
48+
*/
49+
void sigPingReceived(const QSharedPointer<QH::PKG::Ping> &ping);
50+
51+
};
52+
}
53+
#endif

src/private/apiversion.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,18 @@ void APIVersion::setVersion(const VersionData &newVersion) {
3434
_version = newVersion;
3535
}
3636

37+
bool APIVersion::isValid() const {
38+
if (_version.isEmpty())
39+
return false;
40+
41+
for (const auto & version: _version) {
42+
if (version.max() < version.min()) {
43+
return false;
44+
}
45+
}
46+
47+
return true;
48+
}
49+
3750
}
3851
}

src/private/apiversion.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,16 @@ class APIVersion: public QH::PKG::AbstractData
2929
static unsigned short command(){return PROTOCKOL_VERSION_COMMAND;}
3030
static QString commandText(){return "PROTOCKOL_VERSION_COMMAND";}
3131
unsigned short cmd() const override {return APIVersion::command();}
32+
33+
unsigned short cmdOld() const override {return APIVersion::command();}
34+
3235
QString cmdString() const override {return APIVersion::commandText();}
3336

3437
const VersionData &version() const;
3538
void setVersion(const VersionData &newVersion);
3639

40+
bool isValid() const override;
41+
3742
protected:
3843
unsigned int localCode() const override {return typeid(APIVersion).hash_code();}
3944
QDataStream &fromStream(QDataStream &stream) override;

src/private/bigdataparser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ ParserResult BigDataParser::parsePackage(const QSharedPointer<PKG::AbstractData>
6565
}
6666

6767
int BigDataParser::version() const {
68-
return 0;
68+
return 1;
6969
}
7070

7171
QString BigDataParser::parserId() const {

0 commit comments

Comments
 (0)