Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FP MQTTPacket
Dependents: IDW01M1_Cloud_IBM IDW01M1-MQTT IDW01M1-MQTT-1 IDW01M1-MQTT3 ... more
Fork of MQTT by
Revision 11:db15da110a37, committed 2014-04-10
- Comitter:
- icraggs
- Date:
- Thu Apr 10 22:47:17 2014 +0000
- Parent:
- 10:68a4ada53367
- Child:
- 13:fd82db992024
- Child:
- 14:079ddee80e3d
- Commit message:
- Change thread function definitions to allow it to work
Changed in this revision
| MQTTClient.cpp | Show annotated file Show diff for this revision Revisions of this file |
| MQTTClient.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/MQTTClient.cpp Thu Apr 10 15:19:08 2014 +0000
+++ b/MQTTClient.cpp Thu Apr 10 22:47:17 2014 +0000
@@ -17,13 +17,6 @@
#include "MQTTClient.h"
#include "MQTTPacket.h"
-
-void MQTT::threadfn(void* arg)
-{
- ((Client<Network, Timer, Thread>*) arg)->run(NULL);
-}
-
-
MQTT::PacketId::PacketId()
{
next = 0;
--- a/MQTTClient.h Thu Apr 10 15:19:08 2014 +0000
+++ b/MQTTClient.h Thu Apr 10 22:47:17 2014 +0000
@@ -114,12 +114,19 @@
typedef FP<void, Message*> messageHandlerFP;
messageHandlerFP messageHandlers[MAX_MESSAGE_HANDLERS]; // Linked list, or constructor parameter to limit array size?
+ static void threadfn(void* arg);
+
};
-void threadfn(void* arg);
}
+template<class Network, class Timer, class Thread> void MQTT::Client<Network, Timer, Thread>::threadfn(void* arg)
+{
+ ((Client<Network, Timer, Thread>*) arg)->run(NULL);
+}
+
+
template<class Network, class Timer, class Thread> MQTT::Client<Network, Timer, Thread>::Client(Network* network, Timer* timer, const int buffer_size, const int command_timeout) : packetid()
{
@@ -241,6 +248,10 @@
template<class Network, class Timer, class Thread> void MQTT::Client<Network, Timer, Thread>::run(void const *argument)
{
+ while (true)
+ {
+ cycle();
+ }
}
@@ -280,8 +291,7 @@
connectHandler.attach(resultHandler);
// start background thread
-
- this->thread = new Thread((void (*)(void const *argument))&MQTT::threadfn, (void*)this);
+ this->thread = new Thread((void (*)(void const *argument))&MQTT::Client<Network, Timer, Thread>::threadfn, (void*)this);
}
return rc;
