support newer libmosquitto as well
This commit is contained in:
@@ -27,7 +27,7 @@ using namespace std;
|
|||||||
/** the definition of the MQTT arguments. */
|
/** the definition of the MQTT arguments. */
|
||||||
static const struct argp_option g_mqtt_argp_options[] = {
|
static const struct argp_option g_mqtt_argp_options[] = {
|
||||||
{NULL, 0, NULL, 0, "MQTT options:", 1 },
|
{NULL, 0, NULL, 0, "MQTT options:", 1 },
|
||||||
{"mqttport", 1, "PORT", 0, "Connect to MQTT broker on PORT, 0 to disable [0]", 0 },
|
{"mqttport", 1, "PORT", 0, "Connect to MQTT broker on PORT (usually 1883), 0 to disable [0]", 0 },
|
||||||
{"mqtttopic", 2, "TOPIC", 0, "Use MQTT TOPIC (prefix before /%circuit/%name or complete format) [ebusd]", 0 },
|
{"mqtttopic", 2, "TOPIC", 0, "Use MQTT TOPIC (prefix before /%circuit/%name or complete format) [ebusd]", 0 },
|
||||||
|
|
||||||
{NULL, 0, NULL, 0, NULL, 0 },
|
{NULL, 0, NULL, 0, NULL, 0 },
|
||||||
@@ -178,7 +178,11 @@ MqttHandler::MqttHandler(BusHandler* busHandler, MessageMap* messages)
|
|||||||
} else {
|
} else {
|
||||||
string clientId = PACKAGE_STRING;
|
string clientId = PACKAGE_STRING;
|
||||||
clientId += " "+static_cast<unsigned>(getpid());
|
clientId += " "+static_cast<unsigned>(getpid());
|
||||||
m_mosquitto = mosquitto_new(clientId.c_str(), this);
|
m_mosquitto = mosquitto_new(clientId.c_str(),
|
||||||
|
#if (LIBMOSQUITTO_MAJOR>=1)
|
||||||
|
true,
|
||||||
|
#endif
|
||||||
|
this);
|
||||||
if (!m_mosquitto) {
|
if (!m_mosquitto) {
|
||||||
logOtherError("mqtt", "unable to instantiate");
|
logOtherError("mqtt", "unable to instantiate");
|
||||||
}
|
}
|
||||||
@@ -189,8 +193,16 @@ MqttHandler::MqttHandler(BusHandler* busHandler, MessageMap* messages)
|
|||||||
string willTopic = m_globalTopic+"running";
|
string willTopic = m_globalTopic+"running";
|
||||||
string willData = "false";
|
string willData = "false";
|
||||||
size_t len = willData.length();
|
size_t len = willData.length();
|
||||||
mosquitto_will_set(m_mosquitto, true, willTopic.c_str(), (uint32_t)len, (uint8_t*)(willData.c_str()), 0, true);
|
mosquitto_will_set(m_mosquitto,
|
||||||
if (mosquitto_connect(m_mosquitto, "localhost", g_port, 60, true)!=MOSQ_ERR_SUCCESS) {
|
#if (LIBMOSQUITTO_MAJOR<1)
|
||||||
|
true,
|
||||||
|
#endif
|
||||||
|
willTopic.c_str(), (uint32_t)len, (uint8_t*)(willData.c_str()), 0, true);
|
||||||
|
if (mosquitto_connect(m_mosquitto, "localhost", g_port, 60
|
||||||
|
#if (LIBMOSQUITTO_MAJOR<1)
|
||||||
|
, true
|
||||||
|
#endif
|
||||||
|
)!=MOSQ_ERR_SUCCESS) {
|
||||||
logOtherError("mqtt", "unable to connect");
|
logOtherError("mqtt", "unable to connect");
|
||||||
mosquitto_destroy(m_mosquitto);
|
mosquitto_destroy(m_mosquitto);
|
||||||
m_mosquitto = NULL;
|
m_mosquitto = NULL;
|
||||||
@@ -217,7 +229,11 @@ void MqttHandler::start()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void on_message(void *obj, const struct mosquitto_message *message)
|
void on_message(
|
||||||
|
#if (LIBMOSQUITTO_MAJOR>=1)
|
||||||
|
struct mosquitto *mosq,
|
||||||
|
#endif
|
||||||
|
void *obj, const struct mosquitto_message *message)
|
||||||
{
|
{
|
||||||
MqttHandler* handler = (MqttHandler*)obj;
|
MqttHandler* handler = (MqttHandler*)obj;
|
||||||
if (!handler || !message || !handler->isRunning()) {
|
if (!handler || !message || !handler->isRunning()) {
|
||||||
@@ -379,7 +395,11 @@ void MqttHandler::run()
|
|||||||
void MqttHandler::handleTraffic()
|
void MqttHandler::handleTraffic()
|
||||||
{
|
{
|
||||||
if (m_mosquitto) {
|
if (m_mosquitto) {
|
||||||
mosquitto_loop(m_mosquitto, 0);
|
mosquitto_loop(m_mosquitto, 0
|
||||||
|
#if (LIBMOSQUITTO_MAJOR>=1)
|
||||||
|
,1
|
||||||
|
#endif
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user