142 lines
2.7 KiB
C
Raw Normal View History

#ifndef DBCHECK_H
#define DBCHECK_H
#include <QDialog>
#include "pub_sysinfo_api/SysInfoApi.h"
#include "db_base_api/CDbBaseApi.h"
#include "tsdb_api/TsdbApi.h"
#include "db_api_ex/CDbApi.h"
#include <QUdpSocket>
#include <QLabel>
# include <QMutex>
namespace Ui {
class DbCheck;
}
struct SModelInfo
{
//1 正常 -1异常 0未知
int modelReadStatus;
int modelWriteStatus;
int hisReaderStatus;
int tsdbStatus;
SModelInfo()
{
modelReadStatus = 0;
modelWriteStatus = 0;
hisReaderStatus = 0;
tsdbStatus = 0;
}
};
struct DbItemData
{
QString first;
bool isFirst;
bool isUsed;
QString sNodeName;
int maxSyncId;
};
struct SDbItemInfo
{
kbd_public::SDatabaseInfo connect;
QString first;
bool isFirst;
bool isUsed;
bool isVirNode; //是否虚拟节点
QString sNodeName;
int maxSyncId;
bool isDriftAddr;
int keepAliveStatus; //1 收到 0 未收到
QString keepAliveTime;//收到的时间
SDbItemInfo():
isVirNode(false)
{
isDriftAddr = false;
isFirst = false;
isUsed = false;
maxSyncId = 0;
keepAliveStatus = 0;
}
};
class DbCheckThread : public QThread
{
Q_OBJECT
public:
explicit DbCheckThread(QObject *parent = Q_NULLPTR);
~DbCheckThread();
bool startKeepAliveUdp();
void stopKeepAliveUdp();
QMap<QString,SDbItemInfo>& getDbResult();
SModelInfo& getSModelInfo();
bool isEnableSync();
QString getLastErro();
private:
void run();
void updateModelInfo();
bool resetSysInfo();
bool initDbInfoVec();
bool checkDbInfoVec();
bool checkDbInfo(SDbItemInfo& info);
bool check(SDbItemInfo &stConnect,
kbd_public::SNodeInfo &stNodeInfo);
private slots:
void slotReceiveNetKeepAlivedInfo();
private:
kbd_public::CSysInfoInterfacePtr m_ptrSysInfo;
SModelInfo mModelInfo;//模型状态
QMutex m_mapDbInfoMx;
QMap<QString,SDbItemInfo> m_mapDBInfo;//数据库连接状态
bool m_isEnableSync;
QUdpSocket* m_pRecvUdp; // 接收socket
QString mLastErroStr;
};
class DbCheck : public QDialog
{
Q_OBJECT
public:
explicit DbCheck(QWidget *parent = 0);
~DbCheck();
static bool getDbPara(kbd_public::SDatabaseInfo &stConnect, kbd_dbms::CDbPara &para);
protected:
void closeEvent(QCloseEvent *event);
private slots:
void brush();
void slotDbCheckFinished();
private:
void updateModelInfo();
void updateModelInfo(int status, QLabel* lable);
void updateDbInfo();
void updateDbSync();
void updateDbKeepAlive();
void addTable(const SDbItemInfo& info);
private:
Ui::DbCheck *ui;
DbCheckThread m_checkThread;
};
#endif // DBCHECK_H