diff --git a/lib/cpp/mosquittopp.cpp b/lib/cpp/mosquittopp.cpp index eb053fae..5ff4796f 100644 --- a/lib/cpp/mosquittopp.cpp +++ b/lib/cpp/mosquittopp.cpp @@ -257,18 +257,30 @@ mosqpp_EXPORT int subscribe_callback( will, tls); } +namespace { +void mosquitto_callbacks_set(struct mosquitto *mosq) { + mosquitto_pre_connect_callback_set(mosq, on_pre_connect_wrapper); + mosquitto_connect_callback_set(mosq, on_connect_wrapper); + mosquitto_connect_with_flags_callback_set(mosq, on_connect_with_flags_wrapper); + mosquitto_connect_v5_callback_set(mosq, on_connect_v5_wrapper); + mosquitto_disconnect_callback_set(mosq, on_disconnect_wrapper); + mosquitto_disconnect_v5_callback_set(mosq, on_disconnect_v5_wrapper); + mosquitto_publish_callback_set(mosq, on_publish_wrapper); + mosquitto_publish_v5_callback_set(mosq, on_publish_v5_wrapper); + mosquitto_message_callback_set(mosq, on_message_wrapper); + mosquitto_message_v5_callback_set(mosq, on_message_v5_wrapper); + mosquitto_subscribe_callback_set(mosq, on_subscribe_wrapper); + mosquitto_subscribe_v5_callback_set(mosq, on_subscribe_v5_wrapper); + mosquitto_unsubscribe_callback_set(mosq, on_unsubscribe_wrapper); + mosquitto_unsubscribe_v5_callback_set(mosq, on_unsubscribe_v5_wrapper); + mosquitto_log_callback_set(mosq, on_log_wrapper); +} +} mosquittopp::mosquittopp(const char *id, bool clean_session) { m_mosq = mosquitto_new(id, clean_session, this); - mosquitto_connect_callback_set(m_mosq, on_connect_wrapper); - mosquitto_connect_with_flags_callback_set(m_mosq, on_connect_with_flags_wrapper); - mosquitto_disconnect_callback_set(m_mosq, on_disconnect_wrapper); - mosquitto_publish_callback_set(m_mosq, on_publish_wrapper); - mosquitto_message_callback_set(m_mosq, on_message_wrapper); - mosquitto_subscribe_callback_set(m_mosq, on_subscribe_wrapper); - mosquitto_unsubscribe_callback_set(m_mosq, on_unsubscribe_wrapper); - mosquitto_log_callback_set(m_mosq, on_log_wrapper); + mosquitto_callbacks_set(m_mosq); } mosquittopp::~mosquittopp() @@ -281,14 +293,7 @@ int mosquittopp::reinitialise(const char *id, bool clean_session) int rc; rc = mosquitto_reinitialise(m_mosq, id, clean_session, this); if(rc == MOSQ_ERR_SUCCESS){ - mosquitto_connect_callback_set(m_mosq, on_connect_wrapper); - mosquitto_connect_with_flags_callback_set(m_mosq, on_connect_with_flags_wrapper); - mosquitto_disconnect_callback_set(m_mosq, on_disconnect_wrapper); - mosquitto_publish_callback_set(m_mosq, on_publish_wrapper); - mosquitto_message_callback_set(m_mosq, on_message_wrapper); - mosquitto_subscribe_callback_set(m_mosq, on_subscribe_wrapper); - mosquitto_unsubscribe_callback_set(m_mosq, on_unsubscribe_wrapper); - mosquitto_log_callback_set(m_mosq, on_log_wrapper); + mosquitto_callbacks_set(m_mosq); } return rc; }