SOLARIS_QT6_DAQ/ClassInfluxDB.h

72 lines
1.9 KiB
C
Raw Normal View History

2023-01-25 14:59:48 -05:00
#ifndef INFLUXDB_H
#define INFLUXDB_H
#include <stdio.h>
#include <iostream>
#include <vector>
#include <string>
#include <curl/curl.h>
class InfluxDB{
private:
2023-02-13 18:40:02 -05:00
2023-01-25 14:59:48 -05:00
CURL * curl;
CURLcode respond;
long respondCode;
std::string databaseIP;
std::string dataPoints;
std::string token;
struct curl_slist * headers;
2023-01-25 14:59:48 -05:00
std::vector<std::string> databaseList;
unsigned short influxVersion;
std::string influxVersionStr;
bool connectionOK;
2023-01-25 14:59:48 -05:00
static size_t WriteCallBack(char *contents, size_t size, size_t nmemb, void *userp);
void Execute();
public:
2023-01-25 14:59:48 -05:00
InfluxDB(std::string url, bool verbose = false);
InfluxDB();
2023-01-25 14:59:48 -05:00
~InfluxDB();
void SetURL(std::string url);
void SetToken(std::string token);
bool TestingConnection(bool debug = false);
bool IsConnectionOK() const {return connectionOK;}
unsigned short GetVersionNo() const {return influxVersion;}
std::string GetVersionString() const {return influxVersionStr;}
2023-01-25 14:59:48 -05:00
/// Query, query will be in CSV format
std::string CheckInfluxVersion(bool debug = false);
2023-02-14 17:39:49 -05:00
std::string CheckDatabases(); /// this save the list of database into databaseList
void PrintDataBaseList();
2023-01-25 14:59:48 -05:00
std::string Query(std::string databaseName, std::string query);
2023-02-14 17:39:49 -05:00
/// the CheckDatabases() function must be called before
2023-01-25 14:59:48 -05:00
std::vector<std::string> GetDatabaseList() {return databaseList;}
void CreateDatabase(std::string databaseName);
/// for single or batch write,
/// 1, addDataPoint first, you can add as many as you like
/// 2, writeData.
void AddDataPoint(std::string fullString);
2023-02-21 15:53:12 -05:00
unsigned int GetDataLength() const {return dataPoints.length();}
2023-01-25 14:59:48 -05:00
void ClearDataPointsBuffer();
void PrintDataPoints();
void WriteData(std::string databaseName);
2023-02-28 13:28:30 -05:00
bool IsWriteOK() const {return (respond == CURLE_OK) ? true: false;}
2023-01-25 14:59:48 -05:00
};
#endif