#ifndef DATASTORAGECLIENT_H #define DATASTORAGECLIENT_H #include #include namespace MySQL { class MySQLClient; } // namespace MySQL namespace DataStorage { class DataStorageClientImpl; class IDataStorageClient { public: virtual ~IDataStorageClient() {} public: virtual void LogValue(int deviceId, const std::string& dataName, int timestamp, int value) = 0; virtual void LogValue(int deviceId, const std::string& dataName, int timestamp, double value) = 0; virtual void LogValue(int deviceId, const std::string& dataName, int timestamp, const std::string& value) = 0; virtual void LogValueTimed(int deviceId, const std::string& dataName, int value) = 0; virtual void LogValueTimed(int deviceId, const std::string& dataName, double value) = 0; virtual void LogValueTimed(int deviceId, const std::string& dataName, const std::string& value) = 0; }; class DataStorageClient : public IDataStorageClient { public: DataStorageClient(const std::shared_ptr& pMySQLClient, const std::string& table); ~DataStorageClient(); public: virtual void LogValue(int deviceId, const std::string& dataName, int timestamp, int value); virtual void LogValue(int deviceId, const std::string& dataName, int timestamp, double value); virtual void LogValue(int deviceId, const std::string& dataName, int timestamp, const std::string& value); virtual void LogValueTimed(int deviceId, const std::string& dataName, int value); virtual void LogValueTimed(int deviceId, const std::string& dataName, double value); virtual void LogValueTimed(int deviceId, const std::string& dataName, const std::string& value); public: void MetronomeCallback(); private: std::unique_ptr m_pDataStorageClientImpl; }; } // namespace DataStorage #endif // DATASTORAGECLIENT_H