remlogger.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // remlogger.h :
  2. //
  3. #if !defined(AGD_REMLOGGER_H__21BAEB7B_E478_4ED1_B9F6_FDBCE620C56B__INCLUDED_)
  4. #define AGD_REMLOGGER_H__21BAEB7B_E478_4ED1_B9F6_FDBCE620C56B__INCLUDED_
  5. #include <vector>
  6. #ifndef _LIBBUILD
  7. #include <gfa/svc/common/mysqlwrap.h>
  8. #else // _LIBBUILD
  9. #include "mysqlwrap.h"
  10. #endif // _LIBBUILD
  11. /////////////////////////////////////////////////////////////////////////////
  12. // datalogger.h - Declarations:
  13. #define _RL_MAX_DB_NAME_LENGTH 64
  14. #define _RL_MAX_DB_USER_LENGTH 64
  15. #define _RL_MAX_DB_PASS_LENGTH 64
  16. #define _RL_MAX_TABLE_NAME_LENGTH 64
  17. #define _RL_MAX_VARPATH_LENGTH 1000
  18. #define _RL_MAX_STRVAL_LENGTH 1000
  19. #define _RL_MAX_BACKLOG 100
  20. #define _MIN(x, y) ((x) < (y) ? (x) : (y))
  21. typedef struct _RLPARAMS
  22. {
  23. char szDBName[_RL_MAX_DB_NAME_LENGTH];
  24. char szDBUser[_RL_MAX_DB_USER_LENGTH];
  25. char szDBPass[_RL_MAX_DB_PASS_LENGTH];
  26. char szLogsTable[_RL_MAX_TABLE_NAME_LENGTH];
  27. }RLPARAMS, *LPRLPARAMS;
  28. typedef const RLPARAMS *LPCRLPARAMS;
  29. typedef struct _REM_LOG_ENTRY
  30. {
  31. time_t nTimestamp;
  32. bool fNumeric;
  33. double fValue;
  34. char szVarPath[_RL_MAX_VARPATH_LENGTH];
  35. char szStrVal[_RL_MAX_STRVAL_LENGTH];
  36. }REM_LOG_ENTRY, *LPREM_LOG_ENTRY;
  37. typedef const REM_LOG_ENTRY *LPCREM_LOG_ENTRY;
  38. /////////////////////////////////////////////////////////////////////////////
  39. class CRemLogger
  40. {
  41. public:
  42. CRemLogger(LPCRLPARAMS pdlp);
  43. virtual ~CRemLogger(void);
  44. bool InitDatabase(bool bCreateAlways = false);
  45. bool Log(const char *pszVarPath, size_t nCbVarPath, double fValue, const char *pszStrValue, size_t nCbStrValue, time_t nTimestamp, bool fNumeric);
  46. bool Flush(time_t nTimestamp);
  47. std::string LastError(void) const {
  48. return m_lastError;}
  49. private:
  50. bool CreateDatabase(CMySqlDB &rdb, bool bCreateAlways = false);
  51. bool CreateLogsTable(CMySqlDB &rdb);
  52. private:
  53. RLPARAMS m_rlp;
  54. std::vector<REM_LOG_ENTRY> m_logs;
  55. std::string m_lastError;
  56. };
  57. /////////////////////////////////////////////////////////////////////////////
  58. #endif // !defined(AGD_REMLOGGER_H__21BAEB7B_E478_4ED1_B9F6_FDBCE620C56B__INCLUDED_)