File tree Expand file tree Collapse file tree 2 files changed +31
-0
lines changed
Expand file tree Collapse file tree 2 files changed +31
-0
lines changed Original file line number Diff line number Diff line change @@ -97,10 +97,17 @@ MqttClient::~MqttClient()
9797 }
9898}
9999
100+ #ifdef MQTT_CLIENT_STD_FUNCTION_CALLBACK
101+ void MqttClient::onMessage (MqttMessageCallback callback)
102+ {
103+ _onMessage = callback;
104+ }
105+ #else
100106void MqttClient::onMessage (void (*callback)(int ))
101107{
102108 _onMessage = callback;
103109}
110+ #endif
104111
105112int MqttClient::parseMessage ()
106113{
@@ -550,7 +557,11 @@ void MqttClient::poll()
550557 _rxState = MQTT_CLIENT_RX_STATE_READ_PUBLISH_PAYLOAD;
551558
552559 if (_onMessage) {
560+ #ifdef MQTT_CLIENT_STD_FUNCTION_CALLBACK
561+ _onMessage (this ,_rxLength);
562+ #else
553563 _onMessage (_rxLength);
564+ #endif
554565
555566 if (_rxLength == 0 ) {
556567 _rxState = MQTT_CLIENT_RX_STATE_READ_TYPE;
@@ -573,7 +584,11 @@ void MqttClient::poll()
573584 _rxState = MQTT_CLIENT_RX_STATE_READ_PUBLISH_PAYLOAD;
574585
575586 if (_onMessage) {
587+ #ifdef MQTT_CLIENT_STD_FUNCTION_CALLBACK
588+ _onMessage (this ,_rxLength);
589+ #else
576590 _onMessage (_rxLength);
591+ #endif
577592 }
578593
579594 if (_rxLength == 0 ) {
Original file line number Diff line number Diff line change 3232#define MQTT_BAD_USER_NAME_OR_PASSWORD 4
3333#define MQTT_NOT_AUTHORIZED 5
3434
35+ // Make this definition in your application code to use std::functions for onMessage callbacks instead of C-pointers:
36+ // #define MQTT_CLIENT_STD_FUNCTION_CALLBACK
37+
38+ #ifdef MQTT_CLIENT_STD_FUNCTION_CALLBACK
39+ #include < functional>
40+ #endif
41+
3542class MqttClient : public Client {
3643public:
3744 MqttClient (Client& client);
3845 virtual ~MqttClient ();
3946
47+ #ifdef MQTT_CLIENT_STD_FUNCTION_CALLBACK
48+ typedef std::function<void (MqttClient *client, int messageSize)> MessageCallback;
49+ void onMessage (MessageCallback callback);
50+ #else
4051 void onMessage (void (*)(int ));
52+ #endif
4153
4254 int parseMessage ();
4355 String messageTopic () const ;
@@ -128,7 +140,11 @@ class MqttClient : public Client {
128140private:
129141 Client* _client;
130142
143+ #ifdef MQTT_CLIENT_STD_FUNCTION_CALLBACK
144+ MqttClient::MessageCallback _onMessage;
145+ #else
131146 void (*_onMessage)(int );
147+ #endif
132148
133149 String _id;
134150 String _username;
You can’t perform that action at this time.
0 commit comments