MQTT
Diff: MQTTClient.h
- Revision:
- 11:db15da110a37
- Parent:
- 9:01b8cc7d94cc
- Child:
- 13:fd82db992024
diff -r 68a4ada53367 -r db15da110a37 MQTTClient.h --- 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;