4
1
mirror of https://github.com/QuasarApp/Heart.git synced 2025-05-08 15:39:42 +00:00

some fixes

This commit is contained in:
Andrei Yankovich 2021-01-13 17:31:44 +03:00
parent fcedec5039
commit ad2fec5f2e
11 changed files with 47 additions and 60 deletions

@ -58,12 +58,12 @@ void AbstractNode::stop() {
i->disconnect();
}
for (auto it: _workers) {
for (auto it: qAsConst(_workers)) {
if (!it->isFinished())
it->cancel();
}
for (auto it: _receiveData) {
for (auto it: qAsConst(_receiveData)) {
delete it;
}
_receiveData.clear();
@ -464,8 +464,7 @@ bool AbstractNode::sendData(const AbstractData *resp,
auto client = getInfoPtr(addere);
if (!client) {
QuasarAppUtils::Params::log("Response not sent because client == null",
QuasarAppUtils::Error);
QuasarAppUtils::Params::log("Response not sent because client == null");
return false;
}
@ -498,19 +497,10 @@ bool AbstractNode::sendData(const AbstractData *resp,
void AbstractNode::badRequest(const HostAddress &address, const Header &req,
const ErrorData &err, qint8 diff) {
auto client = getInfoPtr(address);
if (!client) {
QuasarAppUtils::Params::log("Bad request detected, bud responce command not sendet!"
" because client == null",
QuasarAppUtils::Error);
return;
}
if (!changeTrust(address, diff)) {
QuasarAppUtils::Params::log("Bad request detected, bud responce command not sendet!"
QuasarAppUtils::Params::log("Bad request detected, bud response command not sent!"
" because trust not changed",
QuasarAppUtils::Error);
@ -523,7 +513,7 @@ void AbstractNode::badRequest(const HostAddress &address, const Header &req,
}
QuasarAppUtils::Params::log("Bad request sendet to adderess: " +
client->sct()->peerAddress().toString(),
address.toString(),
QuasarAppUtils::Info);
}

@ -51,9 +51,9 @@ bool Async::asyncLauncher(const Async::Job &job, bool await) {
if (!await) {
return QMetaObject::invokeMethod(this,
"asyncHandler",
Qt::QueuedConnection,
Q_ARG(QH::Async::Job, job));
"asyncHandler",
Qt::QueuedConnection,
Q_ARG(QH::Async::Job, job));
}
bool workOfEnd = false, workResult = false;

@ -13,7 +13,7 @@
namespace QH {
Package::Package() {
reset();
Package::reset();
}
bool Package::isValid() const {
@ -37,7 +37,7 @@ bool Package::isValid() const {
return false;
}
return qHash(data) == hdr.hash;
return static_cast<uint>(qHash(data)) == hdr.hash;
}
void Package::reset() {

@ -164,28 +164,6 @@ AbstractNodeInfo *DataBaseNode::createNodeInfo(QAbstractSocket *socket, const Ho
return new BaseNodeInfo(socket, clientAddress);
}
void DataBaseNode::badRequest(const HostAddress &address, const Header &req,
const ErrorData &err, qint8 diff) {
if (!changeTrust(address, diff)) {
QuasarAppUtils::Params::log("Bad request detected, bud responce command not sendet!"
" because trust not changed",
QuasarAppUtils::Error);
return;
}
auto bad = BadRequest(err);
if (!sendData(&bad, address, &req)) {
return;
}
QuasarAppUtils::Params::log("Bad request sendet to adderess: " +
address.toString(),
QuasarAppUtils::Info);
}
bool DataBaseNode::changeTrust(const HostAddress &id, int diff) {
auto info = dynamic_cast<const BaseNodeInfo*>(getInfoPtr(id));
if (!info)

@ -102,9 +102,6 @@ protected:
AbstractNodeInfo *createNodeInfo(QAbstractSocket *socket, const HostAddress *clientAddress) const override;
void badRequest(const HostAddress &address, const Header &req,
const PKG::ErrorData& err, qint8 diff = REQUEST_ERROR) override;
bool changeTrust(const HostAddress &id, int diff) override;
/**

@ -77,6 +77,7 @@ public:
/**
* @brief updateObject This method execute a update method of the saveObject and save all changes into database.
* @note This method update object in the database only. If you try update not exists object then this method return false.
* @warning This method do not guarantee that return false if The updated object is not exist.
* @param saveObject This is object for updating.
* @param wait This arguments force current thread wait for the function finishing.
* @return true if objects is updated successful else false.

@ -30,7 +30,7 @@ void ISqlDBCache::globalUpdateDataBase(SqlDBCasheWriteMode mode) {
if (static_cast<bool>(mode & SqlDBCasheWriteMode::On_New_Thread)) {
QtConcurrent::run([currentTime, this](){
QtConcurrent::run([currentTime, this]() {
globalUpdateDataBasePrivate(currentTime);
});
@ -57,7 +57,7 @@ bool ISqlDBCache::updateObjectP(const QSharedPointer<DBObject> &saveObject,
}
return _writer && _writer->isValid() &&
_writer->updateObject(saveObject);
_writer->updateObject(saveObject, wait);
}
bool ISqlDBCache::deleteObjectP(const QSharedPointer<DBObject> &delObj,
@ -91,7 +91,7 @@ bool ISqlDBCache::insertObjectP(const QSharedPointer<DBObject> &saveObject,
}
return _writer && _writer->isValid() &&
_writer->insertObject(saveObject);
_writer->insertObject(saveObject, wait);
}
qint64 ISqlDBCache::getLastUpdateTime() const {

@ -184,8 +184,8 @@ void NetworkNode::thisNode(NodeObject& res) const {
QSet<NodeId> NetworkNode::myKnowAddresses() const {
QSet<NodeId> res;
for (const AbstractNodeInfo *i : connections()) {
const auto connects = connections();
for (const AbstractNodeInfo *i : connects) {
auto info = dynamic_cast<const NetworkNodeInfo*>(i);
if (info && info->selfId().isValid()) {
res += info->selfId();
@ -384,17 +384,25 @@ bool NetworkNode::workWithNodeObjectData(const QSharedPointer<NodeObject> &node,
if (localObjec) {
node->setTrust(std::min(node->trust(), localObjec->trust()));
if (!db()->updateObject(node)) {
QuasarAppUtils::Params::log("Error on precessing of NodeObject updateObject is failed");
return false;
};
} else {
node->setTrust(0);
if (!db()->insertObject(node)) {
QuasarAppUtils::Params::log("Error on precessing of NodeObject insertObject is failed");
return false;
};
}
if (!db()->updateObject(node)) {
return false;
};
auto peerNodeInfo = dynamic_cast<NetworkNodeInfo*>(getInfoPtr(nodeInfo->networkAddress()));
if (!peerNodeInfo)
if (!peerNodeInfo) {
QuasarAppUtils::Params::log("Error on precessing of NodeObject peerNodeInfo is null");
return false;
}
peerNodeInfo->setSelfId(NodeId(node->getId()));
@ -482,7 +490,12 @@ ParserResult NetworkNode::workWithTransportData(AbstractData *transportData,
QuasarAppUtils::Error);
}
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
routeFromSenderToHere.erase(routeFromSenderToHere.cbegin(), routeFromSenderToHere.cbegin() + index);
#else
routeFromSenderToHere.erase(routeFromSenderToHere.begin(), routeFromSenderToHere.begin() + index);
#endif
// inversion route and update route to sender
_router->updateRoute(cmd->senderID(),
{routeFromSenderToHere.rbegin(), routeFromSenderToHere.rend()});
@ -538,23 +551,22 @@ void NetworkNode::badRequest(const HostAddress &address, const Header &req,
void NetworkNode::badRequest(const NodeId &address, const Header &req,
const ErrorData &err, qint8 diff) {
if (!changeTrust(address, diff)) {
QuasarAppUtils::Params::log("Bad request detected, bud responce command not sendet!"
QuasarAppUtils::Params::log("Bad request detected, bud response command not sent!"
" because trust not changed",
QuasarAppUtils::Error);
return;
}
auto bad = BadNodeRequest(err);
auto bad = BadRequest(err);
if (!sendData(&bad, address, &req)) {
return;
}
QuasarAppUtils::Params::log("Bad request sendet to adderess: " +
address.toBase64(),
address.toString(),
QuasarAppUtils::Info);
}

@ -67,6 +67,10 @@ void NodeId::clear() {
_data.clear();
}
QString NodeId::toString() const {
return toBase64();
}
QDataStream &NodeId::fromStream(QDataStream &stream) {
stream >> _data;
return stream;

@ -93,6 +93,12 @@ public:
*/
void clear();
/**
* @brief toString This method return base64 stringValue of the address.
* @return string value of address.
*/
QString toString() const;
QDataStream &fromStream(QDataStream &stream) override;
QDataStream &toStream(QDataStream &stream) const override;

@ -31,7 +31,6 @@ protected:
QDataStream &fromStream(QDataStream &stream) override;
QDataStream &toStream(QDataStream &stream) const override;
bool init() override;
};
}
}