qappctrl.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. // qappctrl.h :
  2. //
  3. #if !defined(AGD_QAPPCTRL_H__ADD46467_F628_4A07_8844_613598E359DE__INCLUDED_)
  4. #define AGD_QAPPCTRL_H__ADD46467_F628_4A07_8844_613598E359DE__INCLUDED_
  5. #include <QObject>
  6. #include <QQmlEngine>
  7. #include <QQmlContext>
  8. #include <gfa/gfaipc.h>
  9. #ifdef __cplusplus
  10. /////////////////////////////////////////////////////////////////////////////
  11. // qappctrl.h - Declarations:
  12. class QGfaAppInfo : public QObject
  13. {
  14. Q_OBJECT
  15. Q_PROPERTY(int state READ state NOTIFY stateChanged)
  16. Q_PROPERTY(QString stateText READ stateText NOTIFY stateTextChanged)
  17. Q_PROPERTY(QString name READ name NOTIFY nameChanged)
  18. Q_PROPERTY(quint64 cycInt READ cycInt NOTIFY cycIntChanged)
  19. Q_PROPERTY(quint64 cycCur READ cycCur NOTIFY cycCurChanged)
  20. Q_PROPERTY(quint64 cycMin READ cycMin NOTIFY cycMinChanged)
  21. Q_PROPERTY(quint64 cycMax READ cycMax NOTIFY cycMaxChanged)
  22. Q_PROPERTY(quint64 wktCur READ wktCur NOTIFY wktCurChanged)
  23. Q_PROPERTY(quint64 wktMin READ wktMin NOTIFY wktMinChanged)
  24. Q_PROPERTY(quint64 wktMax READ wktMax NOTIFY wktMaxChanged)
  25. Q_PROPERTY(quint64 upTime READ upTime NOTIFY upTimeChanged)
  26. Q_PROPERTY(double cpuTime READ cpuTime NOTIFY cpuTimeChanged)
  27. Q_PROPERTY(double cpuCur READ cpuCur NOTIFY cpuCurChanged)
  28. Q_PROPERTY(double cpuAvg READ cpuAvg NOTIFY cpuAvgChanged)
  29. Q_PROPERTY(quint32 vmPeak READ vmPeak NOTIFY vmPeakChanged)
  30. Q_PROPERTY(quint32 vmSize READ vmSize NOTIFY vmSizeChanged)
  31. Q_PROPERTY(quint32 vmHWM READ vmHWM NOTIFY vmHWMChanged)
  32. Q_PROPERTY(quint32 vmRSS READ vmRSS NOTIFY vmRSSChanged)
  33. Q_PROPERTY(quint32 appSize READ appSize NOTIFY appSizeChanged)
  34. public:
  35. Q_INVOKABLE bool pause(void);
  36. Q_INVOKABLE bool resume(void);
  37. Q_INVOKABLE bool stop(void);
  38. signals:
  39. void stateChanged(int val);
  40. void stateTextChanged(const QString &val);
  41. void nameChanged(const QString &val);
  42. void sendControlMessage(appid_t nAppID, ctrlmsg_t msg);
  43. void cycIntChanged(quint64 val);
  44. void cycCurChanged(quint64 val);
  45. void cycMinChanged(quint64 val);
  46. void cycMaxChanged(quint64 val);
  47. void wktCurChanged(quint64 val);
  48. void wktMinChanged(quint64 val);
  49. void wktMaxChanged(quint64 val);
  50. void upTimeChanged(quint64 val);
  51. void cpuTimeChanged(double val);
  52. void cpuCurChanged(double val);
  53. void cpuAvgChanged(double val);
  54. void vmPeakChanged(quint32 val);
  55. void vmSizeChanged(quint32 val);
  56. void vmHWMChanged(quint32 val);
  57. void vmRSSChanged(quint32 val);
  58. void appSizeChanged(quint32 val);
  59. public:
  60. explicit QGfaAppInfo(int nIndex, QObject *pParent = NULL);
  61. virtual ~QGfaAppInfo(void);
  62. appid_t appId(void) const;
  63. int state(void) const;
  64. bool setState(int val);
  65. QString stateText(void) const;
  66. void setStateText(int val);
  67. QString name(void) const;
  68. void setName(const QString &val);
  69. quint64 cycInt(void) const;
  70. quint64 cycCur(void) const;
  71. quint64 cycMin(void) const;
  72. quint64 cycMax(void) const;
  73. quint64 wktCur(void) const;
  74. quint64 wktMin(void) const;
  75. quint64 wktMax(void) const;
  76. quint64 upTime(void) const;
  77. double cpuTime(void) const;
  78. double cpuCur(void) const;
  79. double cpuAvg(void) const;
  80. quint32 vmPeak(void) const;
  81. quint32 vmSize(void) const;
  82. quint32 vmHWM(void) const;
  83. quint32 vmRSS(void) const;
  84. quint32 appSize(void) const;
  85. void setAppSize(quint32 size, GfaIpcAppStates state);
  86. void setAppTimes(LPCGFA_APPCTRL_APPTIMES pat, GfaIpcAppStates state, bool bDoHeavyLoadUpdate = false);
  87. void setAppMemInfo(LPCGFA_APPCTRL_APPMEM pam, GfaIpcAppStates state, bool bDoHeavyLoadUpdate = false);
  88. private:
  89. private:
  90. int m_state;
  91. QString m_stateText;
  92. QString m_name;
  93. int m_nIndex;
  94. appid_t m_nAppID;
  95. quint64 m_cycInt;
  96. quint64 m_cycCur;
  97. quint64 m_cycMin;
  98. quint64 m_cycMax;
  99. quint64 m_wktCur;
  100. quint64 m_wktMin;
  101. quint64 m_wktMax;
  102. quint64 m_upTime;
  103. double m_cpuTime;
  104. double m_cpuPercCur;
  105. double m_cpuPercAvg;
  106. quint32 m_vmPeak;
  107. quint32 m_vmSize;
  108. quint32 m_vmHWM;
  109. quint32 m_vmRSS;
  110. quint32 m_appSize;
  111. };
  112. /////////////////////////////////////////////////////////////////////////////
  113. class QGfaAppCtrl : public QObject
  114. {
  115. Q_OBJECT
  116. Q_PROPERTY(QQmlListProperty<QGfaAppInfo> appInfo READ appInfo CONSTANT)
  117. Q_PROPERTY(quint64 minPass READ minPass NOTIFY minPassChanged)
  118. Q_PROPERTY(quint64 maxPass READ maxPass NOTIFY maxPassChanged)
  119. Q_PROPERTY(quint64 avgPass READ avgPass NOTIFY avgPassChanged)
  120. public:
  121. enum AppStates
  122. {
  123. STATE_NOT_RUNNING = GIAS_StateNotRunning,
  124. STATE_INITIALIZING,
  125. STATE_RUNNING,
  126. STATE_PAUSED,
  127. STATE_HANGING,
  128. STATE_TERMINATING,
  129. STATE_INVALID
  130. };
  131. Q_ENUM(AppStates)
  132. enum AppIndex
  133. {
  134. APP_INDEX_REMANENT = GAI_Remanent,
  135. APP_INDEX_DATALOGGER = GAI_Datalogger,
  136. APP_INDEX_SUMMARIST = GAI_Summarist,
  137. APP_INDEX_REST = GAI_Rest,
  138. APP_INDEX_MQTTCL = GAI_Mqttcl,
  139. APP_INDEX_SYSINFO = GAI_SysInfo
  140. };
  141. Q_ENUM(AppIndex)
  142. signals:
  143. void minPassChanged(quint64 val);
  144. void maxPassChanged(quint64 val);
  145. void avgPassChanged(quint64 val);
  146. public:
  147. explicit QGfaAppCtrl(QObject *pParent = NULL);
  148. virtual ~QGfaAppCtrl(void);
  149. bool Create(appid_t nAppID, const char *pszDisplayName, int nTimerIntMs, clock64_t nHeavyLoadUpdateIntervalMs);
  150. void Release(void);
  151. void RegisterQmlTypes(QQmlEngine &rEng, int nVerMajor = 1, int nVerMinor = 0);
  152. bool PresetDisplayName(appid_t nAppID, const char *pszName);
  153. bool SubscribeStateEvents(appid_t nAppMask);
  154. int SetState(int nState);
  155. public:
  156. Q_INVOKABLE int appIndexFromAppID(quint64 nAppID);
  157. public:
  158. QQmlListProperty<QGfaAppInfo> appInfo(void);
  159. quint64 minPass(void) const;
  160. quint64 maxPass(void) const;
  161. quint64 avgPass(void) const;
  162. private slots:
  163. void onSendControlMessage(appid_t nAppID, ctrlmsg_t msg);
  164. void timerEvent(QTimerEvent *event) override;
  165. private:
  166. HAPPCTRL m_hAC;
  167. appid_t m_nAppID;
  168. int m_nTimerID;
  169. QList<QGfaAppInfo*> m_appInfo;
  170. clock64_t m_curPass;
  171. clock64_t m_minPass;
  172. clock64_t m_maxPass;
  173. clock64_t m_avgPass;
  174. appid_t m_nEvtSrcs;
  175. clock64_t m_nHeavyLoadUpdateIntervalUs;
  176. struct timespec m_tsLastHeavyLoadUpdate;
  177. };
  178. /////////////////////////////////////////////////////////////////////////////
  179. #endif // __cplusplus
  180. #endif // !defined(AGD_QAPPCTRL_H__ADD46467_F628_4A07_8844_613598E359DE__INCLUDED_)