You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.0 KiB
C
71 lines
2.0 KiB
C
9 months ago
|
#ifndef __CAC_SERVICE__
|
||
|
#define __CAC_SERVICE__
|
||
|
|
||
|
|
||
|
#include <thread>
|
||
|
#include <mosquitto.h>
|
||
|
#include "MySQLAdo.h"
|
||
|
|
||
|
#define SYNC_CLIENT_CAC_MQTT 10
|
||
|
#define SYNC_QOS_LEVEL_0 0
|
||
|
|
||
|
#define TOPIC_SENSOR "/xy/sensor/device/data/report"
|
||
|
#define TOPIC_SENSOR "/xy/evaluation/transformer/results"
|
||
|
|
||
|
#define ARG_KEY_MQTT_HOST "mqtthost"
|
||
|
#define ARG_KEY_MQTT_PORT "mqttport"
|
||
|
#define ARG_KEY_MQTT_USER "mqttuser"
|
||
|
#define ARG_KEY_MQTT_PASSWORD "mqttpwd"
|
||
|
#define ARG_KEY_DB_HOST "dbhost"
|
||
|
#define ARG_KEY_DB_PORT "dbport"
|
||
|
#define ARG_KEY_DB_NAME "dbname"
|
||
|
#define ARG_KEY_DB_USER "dbuser"
|
||
|
#define ARG_KEY_DB_PASSWORD "dbpwd"
|
||
|
|
||
|
|
||
|
class CCacService
|
||
|
{
|
||
|
public:
|
||
|
CCacService();
|
||
|
~CCacService();
|
||
|
|
||
|
bool Start(const std::map<std::string, std::string>& arguments);
|
||
|
void Join();
|
||
|
|
||
|
protected:
|
||
|
static void cac_message_callback(struct mosquitto *mosq, void *userdata, const struct mosquitto_message *message);
|
||
|
static void cac_connect_callback(struct mosquitto *mosq, void *userdata, int result);
|
||
|
static void cac_subscribe_callback(struct mosquitto *mosq, void *userdata, int mid, int qos_count, const int *granted_qos);
|
||
|
static void cac_log_callback(struct mosquitto *mosq, void *userdata, int level, const char *str);
|
||
|
|
||
|
void MessageCallback(struct mosquitto *mosq, const struct mosquitto_message *message);
|
||
|
void ConnectCallback(struct mosquitto *mosq, int result);
|
||
|
void SubscribeCallback(struct mosquitto *mosq, int mid, int qos_count, const int *granted_qos);
|
||
|
void LogCallback(struct mosquitto *mosq, int level, const char *str);
|
||
|
|
||
|
void MosquittoLoop();
|
||
|
void ExportLoop(CMySQLAdo* conn);
|
||
|
|
||
|
// unsigned int ProcessTable(const std::string& tableName, const CSyncRecord& syncRecord, const CSyncTableFields& syncTable);
|
||
|
|
||
|
protected:
|
||
|
std::string m_dbHost;
|
||
|
std::string m_dbName;
|
||
|
std::string m_dbUser;
|
||
|
std::string m_dbPassword;
|
||
|
|
||
|
bool m_session;
|
||
|
struct mosquitto* m_mosq;
|
||
|
std::thread m_mosqThread;
|
||
|
std::thread m_exportThread;
|
||
|
|
||
|
std::map<std::string, CSyncTable> m_syncTables;
|
||
|
// std::vector<CSyncTable> m_syncRecords;
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif // __CAC_SERVICE__
|
||
|
|
||
|
|