HM-SPMS/product/src/tools/workBench/BrushDataThread.h
2025-03-13 15:21:23 +08:00

104 lines
2.6 KiB
C++

#ifndef BRUSHDATATHREAD_H
#define BRUSHDATATHREAD_H
#include "pub_utility_api/TimerThreadBase.h"
#include "rdb_net_api/CRdbNetApi.h"
#include "sigar.h"
#include "sigar_format.h"
#include "MonitorCommon.h"
#include "rdb_net_api/CRdbNetApi.h"
#include <QMutex>
using namespace std;
using namespace workBench;
using namespace iot_dbms;
class BrushDataThread : public iot_public::CTimerThreadBase
{
public:
/**
* @brief BrushDataThread 构造函数
*/
BrushDataThread();
virtual ~BrushDataThread();
/**
* @brief beforeExecute 执行execute函数前的处理,只会调用一次
* @return
*/
virtual int beforeExecute();
/**
* @brief execute 业务处理函数,必须继承实现自己的业务逻辑
*/
virtual void execute();
/**
* @brief get_proc_memory 获取进程内存
* @param pid 进程id
* @param procName 进程名称
* @return 进程内存
*/
float get_proc_memory(long long pid, const string &procName);
/**
* @brief get_proc_cpu 获取进程CPU
* @param pid 进程id
* @param procName 进程名称
* @return 返回cpu百分比
*/
float get_proc_cpu(long long pid, const string &procName);
/**
* @brief initialize 初始化网络查询
* @param domainId 连接域
* @param appId 连接应用
* @return iotSuccess-成功 iotFailed-失败
*/
int initialize(int domainId,int appId);
private:
bool queryRunInfo();
/**
* @brief queryAppRunInfo 查询应用信息
* @return true-成功 false-失败
*/
bool queryAppRunInfo();
/**
* @brief queryProcRunInfo 查询进程信息
* @return true-成功 false-失败
*/
bool queryProcRunInfo();
/**
* @brief initData 初始化数据(网络查询不到,初始化数据,设置为未知)
*/
void initData();
private:
QMutex *m_mutex; //< 锁
sigar_t *m_sigar; //< sigar对象
sigar_t *sigar_mem; //< 获取内存
SCpuAndDisk m_stNodeSigar; //< CPU和Disk
CRdbNetApi m_objRdbNetApi; //< 网络查询对象
vector<SApp> m_sysRunAppInfoVec; //< 远程查询应用结果
vector<SProcess> m_sysRunProcInfoVec; //< 远程查询进程结果
QString m_hostName; //< 本节点名称
int m_domainId; //< 订阅域ID
int m_appId; //< 订阅应用ID
};
typedef boost::shared_ptr<BrushDataThread> BrushDataThreadPtr;
#endif // BRUSHDATATHREAD_H