Commit 76d013731490e4332f1552001a1db810be0a97e2
1 parent
e9159973
Fix on connection
Showing
2 changed files
with
69 additions
and
19 deletions
debug_log.txt
0 → 100644
1 | +With broker present | |
2 | + | |
3 | +Jul 02 00:50:19 intelnuc64.osdev.nl test_connection[30797]: MQTT Client started[30797]: [MqttClient::MqttClient] | |
4 | +Jul 02 00:50:19 intelnuc64.osdev.nl [MqttClient::eventHandler][30797]: ConnectionTest - starting event handler. | |
5 | +Jul 02 00:50:19 intelnuc64.osdev.nl MqttClient[30797]: ConnectionTest - Request connect | |
6 | +Jul 02 00:50:19 intelnuc64.osdev.nl [ClientPaho][30797]: ConnectionTest_1_83746b87-431f-4ce1-82e3-2543e9b0a37a - Setting the extra onConnected callback. | |
7 | +Jul 02 00:50:19 intelnuc64.osdev.nl [MqttClient::connectionStatusChanged][30797]: ConnectionTest - connection status of wrapped client ConnectionTest_1_83746b87-431f-4ce1-82e3-2543e9b0a37a changed to 2 | |
8 | +Jul 02 00:50:19 intelnuc64.osdev.nl ClientPaho[30797]: ConnectionTest_1_83746b87-431f-4ce1-82e3-2543e9b0a37a - starting callback event handler | |
9 | +Jul 02 00:50:19 intelnuc64.osdev.nl [ClientPaho::onConnectSuccess][30797]: onConnectSucces triggered.. | |
10 | +Jul 02 00:50:19 intelnuc64.osdev.nl [ClientPaho][30797]: onConnectSuccessOnInstance ConnectionTest_1_83746b87-431f-4ce1-82e3-2543e9b0a37a - connected to endpoint localhost:1883 (mqtt version 4, session present FALSE ) | |
11 | +Jul 02 00:50:19 intelnuc64.osdev.nl [MqttClient::connectionStatusChanged][30797]: ConnectionTest - connection status of wrapped client ConnectionTest_1_83746b87-431f-4ce1-82e3-2543e9b0a37a changed to 4 | |
12 | +Jul 02 00:50:30 intelnuc64.osdev.nl mosquitto[29463]: 1656715830: Client ConnectionTest_1_83746b87-431f-4ce1-82e3-2543e9b0a37a closed its connection. | |
13 | + | |
14 | + | |
15 | +Without a broker present | |
16 | + | |
17 | +Jul 02 00:55:33 intelnuc64.osdev.nl test_connection[31574]: MQTT Client started[31574]: [MqttClient::MqttClient] | |
18 | +Jul 02 00:55:33 intelnuc64.osdev.nl [MqttClient::eventHandler][31574]: ConnectionTest - starting event handler. | |
19 | +Jul 02 00:55:33 intelnuc64.osdev.nl MqttClient[31574]: ConnectionTest - Request connect | |
20 | +Jul 02 00:55:33 intelnuc64.osdev.nl [ClientPaho][31574]: ConnectionTest_1_9eaee6bb-325b-406a-ae70-b4f3e7a41268 - Setting the extra onConnected callback. | |
21 | +Jul 02 00:55:33 intelnuc64.osdev.nl [MqttClient::connectionStatusChanged][31574]: ConnectionTest - connection status of wrapped client ConnectionTest_1_9eaee6bb-325b-406a-ae70-b4f3e7a41268 changed to 2 | |
22 | +Jul 02 00:55:33 intelnuc64.osdev.nl ClientPaho[31574]: ConnectionTest_1_9eaee6bb-325b-406a-ae70-b4f3e7a41268 - starting callback event handler | |
23 | +Jul 02 00:55:33 intelnuc64.osdev.nl ClientPaho[31574]: onConnectFailureOnInstanceConnectionTest_1_9eaee6bb-325b-406a-ae70-b4f3e7a41268 - connection failed with code MQTTASYNC_FAILURE (TCP/TLS connect failure) | |
24 | +Jul 02 00:55:33 intelnuc64.osdev.nl [MqttClient::connectionStatusChanged][31574]: ConnectionTest - connection status of wrapped client ConnectionTest_1_9eaee6bb-325b-406a-ae70-b4f3e7a41268 changed to 0 | |
25 | + | |
26 | +Jul 02 00:55:42 intelnuc64.osdev.nl systemd[1]: Starting Mosquitto MQTT Broker... | |
27 | +Jul 02 00:55:42 intelnuc64.osdev.nl mosquitto[31610]: 1656716142: mosquitto version 2.0.14 starting | |
28 | +Jul 02 00:55:42 intelnuc64.osdev.nl mosquitto[31610]: 1656716142: Config loaded from /etc/mosquitto/mosquitto.conf. | |
29 | +Jul 02 00:55:42 intelnuc64.osdev.nl mosquitto[31610]: 1656716142: Starting in local only mode. Connections will only be possible from clients running on this machine. | |
30 | +Jul 02 00:55:42 intelnuc64.osdev.nl mosquitto[31610]: 1656716142: Create a configuration file which defines a listener to allow remote access. | |
31 | +Jul 02 00:55:42 intelnuc64.osdev.nl mosquitto[31610]: 1656716142: For more details see https://mosquitto.org/documentation/authentication-methods/ | |
32 | +Jul 02 00:55:42 intelnuc64.osdev.nl mosquitto[31610]: 1656716142: Opening ipv4 listen socket on port 1883. | |
33 | +Jul 02 00:55:42 intelnuc64.osdev.nl mosquitto[31610]: 1656716142: Opening ipv6 listen socket on port 1883. | |
34 | +Jul 02 00:55:42 intelnuc64.osdev.nl mosquitto[31610]: 1656716142: mosquitto version 2.0.14 running | |
35 | +Jul 02 00:55:45 intelnuc64.osdev.nl mosquitto[31610]: 1656716145: New connection from 127.0.0.1:42196 on port 1883. | |
36 | +Jul 02 00:55:45 intelnuc64.osdev.nl mosquitto[31610]: 1656716145: New client connected from 127.0.0.1:42196 as ConnectionTest_1_9eaee6bb-325b-406a-ae70-b4f3e7a41268 (p2, c1, k5). | |
37 | +Jul 02 00:55:53 intelnuc64.osdev.nl mosquitto[31610]: 1656716153: Client ConnectionTest_1_9eaee6bb-325b-406a-ae70-b4f3e7a41268 closed its connection. | |
38 | + | |
39 | + | ... | ... |
src/clientpaho.cpp
... | ... | @@ -123,37 +123,29 @@ ClientPaho::ClientPaho(const std::string& _endpoint, |
123 | 123 | , m_callbackEventQueue(m_clientId) |
124 | 124 | , m_workerThread() |
125 | 125 | { |
126 | - if (0 == s_numberOfInstances++) { | |
126 | + if (0 == s_numberOfInstances++) | |
127 | + { | |
127 | 128 | MQTTAsync_setTraceCallback(&ClientPaho::onLogPaho); |
128 | 129 | } |
129 | - // MLOGIC_COMMON_DEBUG("ClientPaho", "%1 - ctor ClientPaho %2", m_clientId, this); | |
130 | + | |
131 | + LogDebug( "[ClientPaho::ClientPaho]", std::string( " " + m_clientId + " - ctor ClientPaho ") ); | |
130 | 132 | parseEndpoint(_endpoint); |
133 | + | |
131 | 134 | auto rc = MQTTAsync_create(&m_client, m_endpoint.c_str(), m_clientId.c_str(), MQTTCLIENT_PERSISTENCE_NONE, nullptr); |
132 | 135 | if (MQTTASYNC_SUCCESS == rc) |
133 | 136 | { |
134 | 137 | MQTTAsync_setCallbacks(m_client, reinterpret_cast<void*>(this), ClientPaho::onConnectionLost, ClientPaho::onMessageArrived, ClientPaho::onDeliveryComplete); |
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::onFirstConnect ); | |
138 | - if( MQTTASYNC_SUCCESS == ccb ) | |
139 | - { | |
140 | - LogDebug( "[ClientPaho]", std::string( m_clientId + " - Setting the extra onConnected callback SUCCEEDED.") ); | |
141 | - } | |
142 | - else | |
143 | - { | |
144 | - LogDebug( "[ClientPaho]", std::string( m_clientId + " - Setting the extra onConnected callback FAILED.") ); | |
145 | - } | |
146 | - | |
147 | 138 | m_workerThread = std::thread(&ClientPaho::callbackEventHandler, this); |
148 | 139 | } |
149 | 140 | else |
150 | 141 | { |
151 | - // Do something sensible here. | |
142 | + LogError( "[ClientPaho::ClientPaho]", std::string( m_clientId + " - Failed to create client for endpoint " + m_endpoint + ", return code " + pahoAsyncErrorCodeToString( rc ) ) ); | |
152 | 143 | } |
153 | 144 | } |
154 | 145 | |
155 | 146 | ClientPaho::~ClientPaho() |
156 | 147 | { |
148 | + LogDebug( "[ClientPaho::~ClientPaho]", std::string( m_clientId + " - dtor ClientPao" ) ); | |
157 | 149 | if( MQTTAsync_isConnected( m_client ) ) |
158 | 150 | { |
159 | 151 | this->unsubscribeAll(); |
... | ... | @@ -206,6 +198,8 @@ std::int32_t ClientPaho::connect( bool wait, const mqtt_LWT &lwt ) |
206 | 198 | setConnectionStatus( ConnectionStatus::ConnectInProgress ); |
207 | 199 | } |
208 | 200 | |
201 | + LogInfo( "[ClientPaho::connect]", std::string( m_clientId + " - start connect to endpoint " + m_endpoint ) ); | |
202 | + | |
209 | 203 | MQTTAsync_connectOptions conn_opts = MQTTAsync_connectOptions_initializer; |
210 | 204 | conn_opts.keepAliveInterval = 5; |
211 | 205 | conn_opts.cleansession = 1; |
... | ... | @@ -214,6 +208,18 @@ std::int32_t ClientPaho::connect( bool wait, const mqtt_LWT &lwt ) |
214 | 208 | conn_opts.context = this; |
215 | 209 | conn_opts.automaticReconnect = 1; |
216 | 210 | |
211 | + // Make sure we get a signal if the promise is fulfilled | |
212 | + auto ccb = MQTTAsync_setConnected( m_client, reinterpret_cast<void*>(this), ClientPaho::onFirstConnect ); | |
213 | + if( MQTTASYNC_SUCCESS == ccb ) | |
214 | + { | |
215 | + LogDebug( "[ClientPaho]", std::string( m_clientId + " - Setting the extra onConnected callback SUCCEEDED.") ); | |
216 | + } | |
217 | + else | |
218 | + { | |
219 | + LogDebug( "[ClientPaho]", std::string( m_clientId + " - Setting the extra onConnected callback FAILED.") ); | |
220 | + } | |
221 | + | |
222 | + // Setup the last will and testament, if so desired. | |
217 | 223 | if( !lwt.topic().empty() ) |
218 | 224 | { |
219 | 225 | MQTTAsync_willOptions will_opts = MQTTAsync_willOptions_initializer; |
... | ... | @@ -221,6 +227,8 @@ std::int32_t ClientPaho::connect( bool wait, const mqtt_LWT &lwt ) |
221 | 227 | will_opts.topicName = lwt.topic().c_str(); |
222 | 228 | |
223 | 229 | conn_opts.will = &will_opts; |
230 | + | |
231 | + LogDebug( "[ClientPaho::connect]", std::string( m_clientId + " - Set Last will and testament. Topic : " + lwt.topic() + " => Message : " + lwt.message() ) ); | |
224 | 232 | } |
225 | 233 | else |
226 | 234 | { |
... | ... | @@ -309,8 +317,10 @@ std::int32_t ClientPaho::disconnect(bool wait, int timeoutMs) |
309 | 317 | } |
310 | 318 | |
311 | 319 | int rc = MQTTAsync_disconnect(m_client, &disconn_opts); |
312 | - if (MQTTASYNC_SUCCESS != rc) { | |
313 | - if (MQTTASYNC_DISCONNECTED == rc) { | |
320 | + if (MQTTASYNC_SUCCESS != rc) | |
321 | + { | |
322 | + if (MQTTASYNC_DISCONNECTED == rc) | |
323 | + { | |
314 | 324 | currentStatus = ConnectionStatus::Disconnected; |
315 | 325 | } |
316 | 326 | |
... | ... | @@ -1140,9 +1150,10 @@ void ClientPaho::onConnectSuccess(void* context, MQTTAsync_successData* response |
1140 | 1150 | if (context) |
1141 | 1151 | { |
1142 | 1152 | auto* cl = reinterpret_cast<ClientPaho*>(context); |
1143 | - if (!response) { | |
1153 | + if (!response) | |
1154 | + { | |
1144 | 1155 | // connect should always have a valid response struct. |
1145 | - // ("ClientPaho", "onConnectSuccess - no response data"); | |
1156 | + LogError( "[ClientPaho]", "onConnectSuccess - no response data"); | |
1146 | 1157 | } |
1147 | 1158 | MqttSuccess resp(response->token, ConnectionData(response->alt.connect.serverURI, response->alt.connect.MQTTVersion, response->alt.connect.sessionPresent)); |
1148 | 1159 | cl->pushIncomingEvent([cl, resp]() { cl->onConnectSuccessOnInstance(resp); }); | ... | ... |