142 lines
2.7 KiB
C
142 lines
2.7 KiB
C
|
|
#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 ¶);
|
|||
|
|
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
|