#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 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 m_sysRunAppInfoVec; //< 远程查询应用结果 vector m_sysRunProcInfoVec; //< 远程查询进程结果 QString m_hostName; //< 本节点名称 int m_domainId; //< 订阅域ID int m_appId; //< 订阅应用ID }; typedef boost::shared_ptr BrushDataThreadPtr; #endif // BRUSHDATATHREAD_H