// remlogger.h : // #if !defined(AGD_REMLOGGER_H__21BAEB7B_E478_4ED1_B9F6_FDBCE620C56B__INCLUDED_) #define AGD_REMLOGGER_H__21BAEB7B_E478_4ED1_B9F6_FDBCE620C56B__INCLUDED_ #include #ifndef _LIBBUILD #include #else // _LIBBUILD #include "mysqlwrap.h" #endif // _LIBBUILD ///////////////////////////////////////////////////////////////////////////// // datalogger.h - Declarations: #define _RL_MAX_DB_NAME_LENGTH 64 #define _RL_MAX_DB_USER_LENGTH 64 #define _RL_MAX_DB_PASS_LENGTH 64 #define _RL_MAX_TABLE_NAME_LENGTH 64 #define _RL_MAX_VARPATH_LENGTH 1000 #define _RL_MAX_STRVAL_LENGTH 1000 #define _RL_MAX_BACKLOG 100 #define _MIN(x, y) ((x) < (y) ? (x) : (y)) typedef struct _RLPARAMS { char szDBName[_RL_MAX_DB_NAME_LENGTH]; char szDBUser[_RL_MAX_DB_USER_LENGTH]; char szDBPass[_RL_MAX_DB_PASS_LENGTH]; char szLogsTable[_RL_MAX_TABLE_NAME_LENGTH]; }RLPARAMS, *LPRLPARAMS; typedef const RLPARAMS *LPCRLPARAMS; typedef struct _REM_LOG_ENTRY { time_t nTimestamp; bool fNumeric; double fValue; char szVarPath[_RL_MAX_VARPATH_LENGTH]; char szStrVal[_RL_MAX_STRVAL_LENGTH]; }REM_LOG_ENTRY, *LPREM_LOG_ENTRY; typedef const REM_LOG_ENTRY *LPCREM_LOG_ENTRY; ///////////////////////////////////////////////////////////////////////////// class CRemLogger { public: CRemLogger(LPCRLPARAMS pdlp); virtual ~CRemLogger(void); bool InitDatabase(bool bCreateAlways = false); bool Log(const char *pszVarPath, size_t nCbVarPath, double fValue, const char *pszStrValue, size_t nCbStrValue, time_t nTimestamp, bool fNumeric); bool Flush(time_t nTimestamp); std::string LastError(void) const { return m_lastError;} private: bool CreateDatabase(CMySqlDB &rdb, bool bCreateAlways = false); bool CreateLogsTable(CMySqlDB &rdb); private: RLPARAMS m_rlp; std::vector m_logs; std::string m_lastError; }; ///////////////////////////////////////////////////////////////////////////// #endif // !defined(AGD_REMLOGGER_H__21BAEB7B_E478_4ED1_B9F6_FDBCE620C56B__INCLUDED_)