-
af9a4824
DapChainNodeNetworkModel.h 2.55 KiB
#ifndef DAPCHAINNODENETWORKMODEL_H
#define DAPCHAINNODENETWORKMODEL_H
#include <QObject>
#include <QTimer>
#include <QHostAddress>
#include <QVariant>
#include "DapNodeType.h"
/// Class model for Network Explorer
class DapChainNodeNetworkModel : public QObject
{
Q_OBJECT
private:
/// Data about network with nodes
QVariant m_data;
/// Timer for request
QTimer* m_timerRequest;
protected:
/// Data about whole network with nodes
DapNodeMap m_nodeMap;
public:
/// Standard constructor
explicit DapChainNodeNetworkModel(QObject *parent = nullptr);
/// Get an instance of a class.
/// @return Instance of a class.
Q_INVOKABLE static DapChainNodeNetworkModel &getInstance();
/// Get data about whole network with nodes
/// @return QMap where key is address and value is structure about one node
const DapNodeMap* getDataMap() const;
/// Get data about node by address
/// @param aAddress Address of node
/// @return data's node structure
const DapNodeData* getNodeData(const QString& aAddress) const;
/// Get current address of node
/// @return address of current node
QString getCurrentAddress() const;
/// Get status of node
/// @param aAddress Address of node
/// @return It is true if node is online
Q_INVOKABLE bool isNodeOnline(const QString& aAddress) const;
public slots:
/// Receive new network data and repaint the screen
/// @param aData data of node network
void receiveNewNetwork(const QVariant& aData);
/// Receive changes status for nodes
/// @param aData data of node network
void receiveNodeStatus(const QVariant& aData);
/// Send request to service about changing status of node
/// @param aIsOnline set new status to node
Q_INVOKABLE void sendRequestNodeStatus(const bool aIsOnline);
/// Start timer for request new data of network
Q_INVOKABLE void startRequest();
/// @param aTimeout in milliseconds for delay
Q_INVOKABLE void startRequest(const int aTimeout);
/// Stop timer for request data of network
Q_INVOKABLE void stopRequest();
signals:
/// Signal for changing network
void changeNodeNetwork();
/// Signal for request network
void requestNodeNetwork();
/// Signal for request status of node
/// @param status status of node
void requestNodeStatus(bool status);
/// SIgnal about changing status node
/// @param node Address of node
/// @param aIsOnline new status to node
void changeStatusNode(QString asNode, bool aIsOnline);
};
#endif // DAPCHAINNODENETWORKMODEL_H