|
@@ -7,7 +7,8 @@
|
|
|
|
|
|
|
|
namespace MQTT {
|
|
namespace MQTT {
|
|
|
|
|
|
|
|
-MQTTImpl::MQTTImpl(const std::string& hostname, int port) :
|
|
|
|
|
|
|
+MQTTImpl::MQTTImpl(const std::string& hostname, int port, int threads) :
|
|
|
|
|
+ m_threadPool(threads),
|
|
|
m_hostname(hostname),
|
|
m_hostname(hostname),
|
|
|
m_port(port),
|
|
m_port(port),
|
|
|
m_connected(false),
|
|
m_connected(false),
|
|
@@ -26,6 +27,7 @@ MQTTImpl::MQTTImpl(const std::string& hostname, int port) :
|
|
|
|
|
|
|
|
MQTTImpl::~MQTTImpl()
|
|
MQTTImpl::~MQTTImpl()
|
|
|
{
|
|
{
|
|
|
|
|
+ m_threadPool.stop();
|
|
|
StopLoop();
|
|
StopLoop();
|
|
|
Disconnect();
|
|
Disconnect();
|
|
|
mosquitto_destroy(m_pMosquitto);
|
|
mosquitto_destroy(m_pMosquitto);
|
|
@@ -160,7 +162,9 @@ void MQTTImpl::MessageCallback(const mosquitto_message* pMessage)
|
|
|
message.topic = std::string(pMessage->topic);
|
|
message.topic = std::string(pMessage->topic);
|
|
|
message.payload = std::string(static_cast<char*>(pMessage->payload), pMessage->payloadlen);
|
|
message.payload = std::string(static_cast<char*>(pMessage->payload), pMessage->payloadlen);
|
|
|
|
|
|
|
|
- m_signal.emit(message);
|
|
|
|
|
|
|
+ m_threadPool.push([this, message](int) {
|
|
|
|
|
+ m_signal.emit(message);
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
bool MQTTImpl::InternalSubscribe(const std::string& topic)
|
|
bool MQTTImpl::InternalSubscribe(const std::string& topic)
|