Commit a670240bdae74c0515b76307249ba5fb6a34e70f
1 parent
9421324b
Fix on connection
Showing
2 changed files
with
16 additions
and
13 deletions
include/clientpaho.h
... | ... | @@ -207,7 +207,7 @@ private: |
207 | 207 | * @brief Callback method that is called when a first connect succeeds. |
208 | 208 | * @param reason Som extra information if there is any. |
209 | 209 | */ |
210 | - void onFirstConnectInstance(const std::string &reason); | |
210 | + void onFirstConnectOnInstance(const std::string &reason); | |
211 | 211 | |
212 | 212 | /** |
213 | 213 | * @brief Callback method that is called when a reconnect succeeds. | ... | ... |
src/clientpaho.cpp
... | ... | @@ -133,8 +133,8 @@ ClientPaho::ClientPaho(const std::string& _endpoint, |
133 | 133 | { |
134 | 134 | MQTTAsync_setCallbacks(m_client, reinterpret_cast<void*>(this), ClientPaho::onConnectionLost, ClientPaho::onMessageArrived, ClientPaho::onDeliveryComplete); |
135 | 135 | LogDebug( "[ClientPaho]", std::string( m_clientId + " - Setting the extra onConnected callback.") ); |
136 | - /* | |
137 | - auto ccb = MQTTAsync_setConnected( m_client, reinterpret_cast<void*>(this), ClientPaho::onConnect ); | |
136 | + | |
137 | + auto ccb = MQTTAsync_setConnected( m_client, reinterpret_cast<void*>(this), ClientPaho::onFirstConnect ); | |
138 | 138 | if( MQTTASYNC_SUCCESS == ccb ) |
139 | 139 | { |
140 | 140 | LogDebug( "[ClientPaho]", std::string( m_clientId + " - Setting the extra onConnected callback SUCCEEDED.") ); |
... | ... | @@ -143,7 +143,7 @@ ClientPaho::ClientPaho(const std::string& _endpoint, |
143 | 143 | { |
144 | 144 | LogDebug( "[ClientPaho]", std::string( m_clientId + " - Setting the extra onConnected callback FAILED.") ); |
145 | 145 | } |
146 | - */ | |
146 | + | |
147 | 147 | m_workerThread = std::thread(&ClientPaho::callbackEventHandler, this); |
148 | 148 | } |
149 | 149 | else |
... | ... | @@ -368,10 +368,13 @@ std::int32_t ClientPaho::publish(const MqttMessage& message, int qos) |
368 | 368 | |
369 | 369 | |
370 | 370 | std::unique_lock<std::mutex> lck(m_mutex); |
371 | - if (ConnectionStatus::ReconnectInProgress == m_connectionStatus || m_processPendingPublishes) { | |
371 | + if (ConnectionStatus::ReconnectInProgress == m_connectionStatus || m_processPendingPublishes) | |
372 | + // if (ConnectionStatus::Connected != m_connectionStatus || m_processPendingPublishes) | |
373 | + { | |
372 | 374 | m_pendingPublishesReadyCV.wait(lck, [this]() { return !m_processPendingPublishes; }); |
373 | - if (ConnectionStatus::ReconnectInProgress == m_connectionStatus) { | |
374 | - // ("ClientPaho", "Adding publish to pending queue."); | |
375 | + if(ConnectionStatus::ReconnectInProgress == m_connectionStatus) | |
376 | + { | |
377 | + LogDebug( "ClientPaho", "Adding publish to pending queue."); | |
375 | 378 | m_pendingPublishes.push_front(Publish{ qos, message }); |
376 | 379 | return -1; |
377 | 380 | } |
... | ... | @@ -392,7 +395,7 @@ void ClientPaho::publishPending() |
392 | 395 | |
393 | 396 | if (ConnectionStatus::Connected != m_connectionStatus) |
394 | 397 | { |
395 | - // MqttException, "Not connected"); | |
398 | + LogInfo( "[ClientPaho::publishPending]", std::string( m_clientId + " - " ) ) | |
396 | 399 | } |
397 | 400 | |
398 | 401 | while (!m_pendingPublishes.empty()) |
... | ... | @@ -735,7 +738,7 @@ void ClientPaho::pushIncomingEvent(std::function<void()> ev) |
735 | 738 | |
736 | 739 | void ClientPaho::callbackEventHandler() |
737 | 740 | { |
738 | - // ("ClientPaho", "%1 - starting callback event handler", m_clientId); | |
741 | + LogDebug("ClientPaho", std::string( m_clientId + " - starting callback event handler") ); | |
739 | 742 | for (;;) { |
740 | 743 | std::vector<std::function<void()>> events; |
741 | 744 | if (!m_callbackEventQueue.pop(events)) |
... | ... | @@ -752,16 +755,16 @@ void ClientPaho::callbackEventHandler() |
752 | 755 | // ("ClientPaho", "%1 - leaving callback event handler", m_clientId); |
753 | 756 | } |
754 | 757 | |
755 | -void ClientPaho::onFirstConnectInstance(const std::string &reason) | |
758 | +void ClientPaho::onFirstConnectOnInstance(const std::string &reason) | |
756 | 759 | { |
757 | 760 | (void)reason; |
758 | 761 | { |
759 | 762 | OSDEV_COMPONENTS_LOCKGUARD(m_mutex); |
760 | - // Register the connect callback that is used in reconnect scenarios. | |
761 | - auto rc = MQTTAsync_setConnected(m_client, this, &ClientPaho::onConnect); | |
763 | + // Remove the connect callback that is used in reconnect scenarios. | |
764 | + auto rc = MQTTAsync_setConnected(m_client, this, nullptr ); | |
762 | 765 | if (MQTTASYNC_SUCCESS != rc) |
763 | 766 | { |
764 | - LogError( "[ClientPaho]", std::string( "onFirstConnectInstance " + m_clientId + " - registering the connected callback failed with code : " + pahoAsyncErrorCodeToString(rc) ) ); | |
767 | + LogError( "[ClientPaho]", std::string( "onFirstConnectOnInstance " + m_clientId + " - registering the connected callback failed with code : " + pahoAsyncErrorCodeToString(rc) ) ); | |
765 | 768 | } |
766 | 769 | } |
767 | 770 | ... | ... |