Heart/NetworkProtocol/basenode.h

115 lines
2.8 KiB
C
Raw Normal View History

2019-10-21 18:09:25 +03:00
#ifndef BASENODE_H
#define BASENODE_H
#include "abstractnode.h"
2019-11-07 16:13:56 +03:00
#include <dbobject.h>
2019-12-06 13:37:11 +03:00
namespace NP {
2019-10-21 18:09:25 +03:00
2019-10-29 18:31:01 +03:00
class SqlDBCache;
class SqlDBWriter;
2019-11-07 20:49:06 +03:00
class UserData;
2019-11-02 20:38:13 +03:00
class UserDataRequest;
2019-11-23 13:39:08 +03:00
class AvailableDataRequest;
2019-11-27 17:24:08 +03:00
class WebSocket;
class WebSocketController;
2019-10-21 18:09:25 +03:00
/**
* @brief The BaseNode class - base inplementation of nodes
*/
class BaseNode : public AbstractNode
{
Q_OBJECT
public:
/**
* @brief BaseNode
* @param mode
* @param ptr
*/
BaseNode(SslMode mode = SslMode::NoSSL, QObject * ptr = nullptr);
2019-10-29 18:31:01 +03:00
/**
2019-10-31 18:15:20 +03:00
* @brief intSqlDb - this function init database of node
* @param DBparamsFile - path to json file with all patarams
* @param cache - new SqlDBCache object
* @param writer - new SqlDBWriter
* @return true if all good
2019-10-29 18:31:01 +03:00
*/
2019-11-29 23:21:37 +03:00
virtual bool intSqlDb( QString DBparamsFile = "",
2019-10-29 18:31:01 +03:00
SqlDBCache * cache = nullptr,
SqlDBWriter* writer = nullptr);
/**
* @brief isSqlInited
* @return return true if intSqlDb invocked correctly;
*/
bool isSqlInited() const;
/**
* @brief run server on address an port
* @param addres
* @param port
* @return recomendet befor invoke this method call the intSqlDb.
* If you skeap a call of intSqlDb method then data base inited with default parameters.
*/
bool run(const QString &addres, unsigned short port) override;
~BaseNode() override;
2019-10-31 18:15:20 +03:00
/**
* @brief defaultDbParams
* @return
*/
virtual QVariantMap defaultDbParams() const;
2019-11-02 20:38:13 +03:00
signals:
2019-12-06 13:37:11 +03:00
void incomingData(SP<AbstractData> pkg,
2019-11-08 20:12:31 +03:00
const QHostAddress& sender);
2019-11-07 20:49:06 +03:00
void requestError(QString msg);
2019-11-02 20:38:13 +03:00
2019-10-30 17:58:38 +03:00
protected:
2019-10-31 18:15:20 +03:00
/**
* @brief initDefaultDbObjects create default cache and db writer if pointer is null
* @param cache
* @param writer
*/
void initDefaultDbObjects(SqlDBCache *cache, SqlDBWriter *writer);
2019-10-30 17:58:38 +03:00
2019-11-02 20:38:13 +03:00
/**
* @brief parsePackage
* @param pkg
* @param sender
* @return
*/
ParserResult parsePackage(const Package &pkg,
2019-12-06 13:37:11 +03:00
const WP<AbstractNodeInfo> &sender) override;
2019-11-02 20:38:13 +03:00
2019-11-04 17:51:35 +03:00
2019-11-03 16:03:00 +03:00
/**
* @brief hashgenerator
* @param pass
*/
virtual QString hashgenerator(const QByteArray &pass);
2019-12-06 13:37:11 +03:00
SP<AbstractNodeInfo> createNodeInfo(QAbstractSocket *socket) const override;
2019-11-02 20:38:13 +03:00
2019-12-06 13:37:11 +03:00
WP<SqlDBCache> db() const;
2019-11-23 13:39:08 +03:00
2019-12-06 13:37:11 +03:00
bool workWithSubscribe(const WP<AbstractData> &rec,
2019-11-27 17:24:08 +03:00
const QHostAddress &address);
2019-11-23 13:39:08 +03:00
2019-10-29 18:31:01 +03:00
private:
2019-12-06 13:37:11 +03:00
SP<SqlDBCache> _db;
bool workWithAvailableDataRequest(const WP<AbstractData> &rec,
2019-11-23 13:39:08 +03:00
const QHostAddress &addere,
const Header *rHeader);
2019-11-27 17:24:08 +03:00
WebSocketController *_webSocketWorker = nullptr;
2019-10-21 18:09:25 +03:00
};
}
#endif // BASENODE_H