mosquitto/lib/cpp/mosquittopp.cpp

612 lines
15 KiB
C++
Raw Normal View History

2014-05-08 00:27:00 +02:00
/*
Copyright (c) 2010-2019 Roger Light <roger@atchoo.org>
2014-05-08 00:27:00 +02:00
All rights reserved. This program and the accompanying materials
2020-11-25 18:34:21 +01:00
are made available under the terms of the Eclipse Public License 2.0
2014-05-08 00:27:00 +02:00
and Eclipse Distribution License v1.0 which accompany this distribution.
2021-10-05 16:20:37 +02:00
2014-05-08 00:27:00 +02:00
The Eclipse Public License is available at
2020-11-25 18:34:21 +01:00
https://www.eclipse.org/legal/epl-2.0/
2014-05-08 00:27:00 +02:00
and the Eclipse Distribution License is available at
http://www.eclipse.org/org/documents/edl-v10.php.
2021-10-05 16:20:37 +02:00
2014-05-08 00:27:00 +02:00
Contributors:
Roger Light - initial implementation and documentation.
*/
#include <cstdlib>
#include <mosquitto.h>
2023-12-23 13:59:58 +01:00
#include <mosquitto/libmosquittopp.h>
2014-05-08 00:27:00 +02:00
2019-03-13 15:11:50 +01:00
#define UNUSED(A) (void)(A)
2025-09-17 12:19:46 +02:00
namespace mosqpp{
2014-05-08 00:27:00 +02:00
static void on_pre_connect_wrapper(struct mosquitto *mosq, void *userdata)
{
2025-09-17 12:19:46 +02:00
class mosquittopp *m = (class mosquittopp *) userdata;
UNUSED(mosq);
m->on_pre_connect();
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
static void on_connect_wrapper(struct mosquitto *mosq, void *userdata, int rc)
{
2025-09-17 12:19:46 +02:00
class mosquittopp *m = (class mosquittopp *) userdata;
2019-03-13 15:11:50 +01:00
UNUSED(mosq);
2014-05-08 00:27:00 +02:00
m->on_connect(rc);
}
2025-09-17 12:19:46 +02:00
2018-04-11 15:11:02 +02:00
static void on_connect_with_flags_wrapper(struct mosquitto *mosq, void *userdata, int rc, int flags)
{
2025-09-17 12:19:46 +02:00
class mosquittopp *m = (class mosquittopp *) userdata;
2019-03-13 15:11:50 +01:00
UNUSED(mosq);
2018-04-11 15:11:02 +02:00
m->on_connect_with_flags(rc, flags);
}
2025-09-17 12:19:46 +02:00
static void on_connect_v5_wrapper(struct mosquitto *mosq, void *userdata, int rc, int flags, const mosquitto_property *props)
{
2025-09-17 12:19:46 +02:00
class mosquittopp *m = (class mosquittopp *) userdata;
UNUSED(mosq);
m->on_connect_v5(rc, flags, props);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
static void on_disconnect_wrapper(struct mosquitto *mosq, void *userdata, int rc)
{
2025-09-17 12:19:46 +02:00
class mosquittopp *m = (class mosquittopp *) userdata;
2019-03-13 15:11:50 +01:00
UNUSED(mosq);
2014-05-08 00:27:00 +02:00
m->on_disconnect(rc);
}
2025-09-17 12:19:46 +02:00
static void on_disconnect_v5_wrapper(struct mosquitto *mosq, void *userdata, int rc, const mosquitto_property *props)
{
2025-09-17 12:19:46 +02:00
class mosquittopp *m = (class mosquittopp *) userdata;
UNUSED(mosq);
m->on_disconnect_v5(rc, props);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
static void on_publish_wrapper(struct mosquitto *mosq, void *userdata, int mid)
{
2025-09-17 12:19:46 +02:00
class mosquittopp *m = (class mosquittopp *) userdata;
2019-03-13 15:11:50 +01:00
UNUSED(mosq);
2014-05-08 00:27:00 +02:00
m->on_publish(mid);
}
2025-09-17 12:19:46 +02:00
static void on_publish_v5_wrapper(struct mosquitto *mosq, void *userdata, int mid, int reason_code, const mosquitto_property *props)
{
2025-09-17 12:19:46 +02:00
class mosquittopp *m = (class mosquittopp *) userdata;
UNUSED(mosq);
m->on_publish_v5(mid, reason_code, props);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
static void on_message_wrapper(struct mosquitto *mosq, void *userdata, const struct mosquitto_message *message)
{
2025-09-17 12:19:46 +02:00
class mosquittopp *m = (class mosquittopp *) userdata;
2019-03-13 15:11:50 +01:00
UNUSED(mosq);
2014-05-08 00:27:00 +02:00
m->on_message(message);
}
2025-09-17 12:19:46 +02:00
static void on_message_v5_wrapper(struct mosquitto *mosq, void *userdata, const struct mosquitto_message *message, const mosquitto_property *props)
{
2025-09-17 12:19:46 +02:00
class mosquittopp *m = (class mosquittopp *) userdata;
UNUSED(mosq);
m->on_message_v5(message, props);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
static void on_subscribe_wrapper(struct mosquitto *mosq, void *userdata, int mid, int qos_count, const int *granted_qos)
{
2025-09-17 12:19:46 +02:00
class mosquittopp *m = (class mosquittopp *) userdata;
2019-03-13 15:11:50 +01:00
UNUSED(mosq);
2014-05-08 00:27:00 +02:00
m->on_subscribe(mid, qos_count, granted_qos);
}
2025-09-17 12:19:46 +02:00
static void on_subscribe_v5_wrapper(struct mosquitto *mosq, void *userdata, int mid, int qos_count, const int *granted_qos, const mosquitto_property *props)
{
2025-09-17 12:19:46 +02:00
class mosquittopp *m = (class mosquittopp *) userdata;
UNUSED(mosq);
m->on_subscribe_v5(mid, qos_count, granted_qos, props);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
static void on_unsubscribe_wrapper(struct mosquitto *mosq, void *userdata, int mid)
{
2025-09-17 12:19:46 +02:00
class mosquittopp *m = (class mosquittopp *) userdata;
2019-03-13 15:11:50 +01:00
UNUSED(mosq);
2014-05-08 00:27:00 +02:00
m->on_unsubscribe(mid);
}
2025-09-17 12:19:46 +02:00
static void on_unsubscribe_v5_wrapper(struct mosquitto *mosq, void *userdata, int mid, const mosquitto_property *props)
{
2025-09-17 12:19:46 +02:00
class mosquittopp *m = (class mosquittopp *) userdata;
UNUSED(mosq);
m->on_unsubscribe_v5(mid, props);
}
2014-05-08 00:27:00 +02:00
2024-10-28 23:28:23 +01:00
static int on_ext_auth_wrapper(struct mosquitto *mosq, void *userdata, const char *auth_method, uint16_t auth_data_len, const void *auth_data, const mosquitto_property *props)
{
2025-09-17 12:19:46 +02:00
class mosquittopp *m = (class mosquittopp *) userdata;
2024-10-28 23:28:23 +01:00
UNUSED(mosq);
return m->on_ext_auth(auth_method, auth_data_len, auth_data, props);
}
2014-05-08 00:27:00 +02:00
static void on_log_wrapper(struct mosquitto *mosq, void *userdata, int level, const char *str)
{
2025-09-17 12:19:46 +02:00
class mosquittopp *m = (class mosquittopp *) userdata;
2019-03-13 15:11:50 +01:00
UNUSED(mosq);
2014-05-08 00:27:00 +02:00
m->on_log(level, str);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int lib_version(int *major, int *minor, int *revision)
{
2025-09-17 12:19:46 +02:00
if(major){
*major = LIBMOSQUITTO_MAJOR;
}
if(minor){
*minor = LIBMOSQUITTO_MINOR;
}
if(revision){
*revision = LIBMOSQUITTO_REVISION;
}
2014-05-08 00:27:00 +02:00
return LIBMOSQUITTO_VERSION_NUMBER;
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int lib_init()
{
return mosquitto_lib_init();
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int lib_cleanup()
{
return mosquitto_lib_cleanup();
}
2025-09-17 12:19:46 +02:00
const char *strerror(int mosq_errno)
2014-05-08 00:27:00 +02:00
{
return mosquitto_strerror(mosq_errno);
}
2025-09-17 12:19:46 +02:00
const char *connack_string(int connack_code)
2014-05-08 00:27:00 +02:00
{
return mosquitto_connack_string(connack_code);
}
2025-09-17 12:19:46 +02:00
int property_check_command(int command, int identifier)
{
return mosquitto_property_check_command(command, identifier);
}
2025-09-17 12:19:46 +02:00
int property_check_all(int command, const mosquitto_property *properties)
{
return mosquitto_property_check_all(command, properties);
}
2025-09-17 12:19:46 +02:00
const char *reason_string(int reason_code)
{
return mosquitto_reason_string(reason_code);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int sub_topic_tokenise(const char *subtopic, char ***topics, int *count)
{
return mosquitto_sub_topic_tokenise(subtopic, topics, count);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int sub_topic_tokens_free(char ***topics, int count)
{
return mosquitto_sub_topic_tokens_free(topics, count);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int topic_matches_sub(const char *sub, const char *topic, bool *result)
{
return mosquitto_topic_matches_sub(sub, topic, result);
}
2025-09-17 12:19:46 +02:00
int topic_matches_sub_with_pattern(const char *sub, const char *topic, const char *clientid, const char *username, bool *result)
{
return mosquitto_topic_matches_sub_with_pattern(sub, topic, clientid, username, result);
}
2025-09-17 12:19:46 +02:00
int sub_matches_acl(const char *acl, const char *sub, bool *result)
{
return mosquitto_sub_matches_acl(acl, sub, result);
}
2025-09-17 12:19:46 +02:00
int sub_matches_acl_with_pattern(const char *acl, const char *sub, const char *clientid, const char *username, bool *result)
{
return mosquitto_sub_matches_acl_with_pattern(acl, sub, clientid, username, result);
}
2025-09-17 12:19:46 +02:00
int validate_utf8(const char *str, int len)
{
return mosquitto_validate_utf8(str, len);
}
2025-09-17 12:19:46 +02:00
2016-01-26 18:00:08 +01:00
int subscribe_simple(
struct mosquitto_message **messages,
int msg_count,
bool retained,
2016-01-26 18:00:08 +01:00
const char *topic,
int qos,
const char *host,
int port,
2023-01-16 19:46:35 +01:00
const char *clientid,
2016-01-26 18:00:08 +01:00
int keepalive,
bool clean_session,
const char *username,
const char *password,
const struct libmosquitto_will *will,
const struct libmosquitto_tls *tls)
{
return mosquitto_subscribe_simple(
messages, msg_count, retained,
topic, qos,
2023-01-16 19:46:35 +01:00
host, port, clientid, keepalive, clean_session,
2016-01-26 18:00:08 +01:00
username, password,
will, tls);
}
2025-09-17 12:19:46 +02:00
2016-01-26 18:00:08 +01:00
mosqpp_EXPORT int subscribe_callback(
int (*callback)(struct mosquitto *, void *, const struct mosquitto_message *),
void *userdata,
2016-01-26 18:00:08 +01:00
const char *topic,
int qos,
const char *host,
int port,
2023-01-16 19:46:35 +01:00
const char *clientid,
2016-01-26 18:00:08 +01:00
int keepalive,
bool clean_session,
const char *username,
const char *password,
const struct libmosquitto_will *will,
const struct libmosquitto_tls *tls)
{
return mosquitto_subscribe_callback(
callback, userdata,
topic, qos,
2023-01-16 19:46:35 +01:00
host, port, clientid, keepalive, clean_session,
2016-01-26 18:00:08 +01:00
username, password,
will, tls);
}
namespace {
2025-09-17 12:19:46 +02:00
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);
2024-10-28 23:28:23 +01:00
mosquitto_ext_auth_callback_set(mosq, on_ext_auth_wrapper);
mosquitto_log_callback_set(mosq, on_log_wrapper);
}
}
2016-01-26 18:00:08 +01:00
2014-05-08 00:27:00 +02:00
mosquittopp::mosquittopp(const char *id, bool clean_session)
{
m_mosq = mosquitto_new(id, clean_session, this);
2022-10-16 15:48:26 +02:00
if(m_mosq){
mosquitto_callbacks_set(m_mosq);
}
2014-05-08 00:27:00 +02:00
}
mosquittopp::~mosquittopp()
{
mosquitto_destroy(m_mosq);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
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_callbacks_set(m_mosq);
2014-05-08 00:27:00 +02:00
}
return rc;
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::connect(const char *host, int port, int keepalive)
{
return mosquitto_connect(m_mosq, host, port, keepalive);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::connect(const char *host, int port, int keepalive, const char *bind_address)
{
return mosquitto_connect_bind(m_mosq, host, port, keepalive, bind_address);
}
2025-09-17 12:19:46 +02:00
int mosquittopp::connect_v5(const char *host, int port, int keepalive, const char *bind_address, const mosquitto_property *properties)
{
return mosquitto_connect_bind_v5(m_mosq, host, port, keepalive, bind_address, properties);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::connect_async(const char *host, int port, int keepalive)
{
return mosquitto_connect_async(m_mosq, host, port, keepalive);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::connect_async(const char *host, int port, int keepalive, const char *bind_address)
{
return mosquitto_connect_bind_async(m_mosq, host, port, keepalive, bind_address);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::reconnect()
{
return mosquitto_reconnect(m_mosq);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::reconnect_async()
{
return mosquitto_reconnect_async(m_mosq);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::disconnect()
{
return mosquitto_disconnect(m_mosq);
}
2025-09-17 12:19:46 +02:00
int mosquittopp::disconnect_v5(int reason_code, const mosquitto_property *properties)
{
return mosquitto_disconnect_v5(m_mosq, reason_code, properties);
}
2025-09-17 12:19:46 +02:00
2024-10-28 23:28:23 +01:00
int mosquittopp::ext_auth_continue(const char *auth_method, uint16_t auth_data_len, const void *auth_data, const mosquitto_property *properties)
{
return mosquitto_ext_auth_continue(m_mosq, auth_method, auth_data_len, auth_data, properties);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::socket()
{
return mosquitto_socket(m_mosq);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::will_set(const char *topic, int payloadlen, const void *payload, int qos, bool retain)
{
return mosquitto_will_set(m_mosq, topic, payloadlen, payload, qos, retain);
}
2025-09-17 12:19:46 +02:00
int mosquittopp::will_set_v5(const char *topic, int payloadlen, const void *payload, int qos, bool retain, mosquitto_property *properties)
{
return mosquitto_will_set_v5(m_mosq, topic, payloadlen, payload, qos, retain, properties);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::will_clear()
{
return mosquitto_will_clear(m_mosq);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::username_pw_set(const char *username, const char *password)
{
return mosquitto_username_pw_set(m_mosq, username, password);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::publish(int *mid, const char *topic, int payloadlen, const void *payload, int qos, bool retain)
{
return mosquitto_publish(m_mosq, mid, topic, payloadlen, payload, qos, retain);
}
2025-09-17 12:19:46 +02:00
int mosquittopp::publish_v5(int *mid, const char *topic, int payloadlen, const void *payload, int qos, bool retain, const mosquitto_property *properties)
{
return mosquitto_publish_v5(m_mosq, mid, topic, payloadlen, payload, qos, retain, properties);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
void mosquittopp::reconnect_delay_set(unsigned int reconnect_delay, unsigned int reconnect_delay_max, bool reconnect_exponential_backoff)
{
mosquitto_reconnect_delay_set(m_mosq, reconnect_delay, reconnect_delay_max, reconnect_exponential_backoff);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::max_inflight_messages_set(unsigned int max_inflight_messages)
{
return mosquitto_max_inflight_messages_set(m_mosq, max_inflight_messages);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
void mosquittopp::message_retry_set(unsigned int message_retry)
{
mosquitto_message_retry_set(m_mosq, message_retry);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::subscribe(int *mid, const char *sub, int qos)
{
return mosquitto_subscribe(m_mosq, mid, sub, qos);
}
2025-09-17 12:19:46 +02:00
int mosquittopp::subscribe_v5(int *mid, const char *sub, int qos, int options, const mosquitto_property *properties)
{
return mosquitto_subscribe_v5(m_mosq, mid, sub, qos, options, properties);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::unsubscribe(int *mid, const char *sub)
{
return mosquitto_unsubscribe(m_mosq, mid, sub);
}
2025-09-17 12:19:46 +02:00
int mosquittopp::unsubscribe_v5(int *mid, const char *sub, const mosquitto_property *properties)
{
return mosquitto_unsubscribe_v5(m_mosq, mid, sub, properties);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::loop(int timeout, int max_packets)
{
return mosquitto_loop(m_mosq, timeout, max_packets);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::loop_misc()
{
return mosquitto_loop_misc(m_mosq);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::loop_read(int max_packets)
{
return mosquitto_loop_read(m_mosq, max_packets);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::loop_write(int max_packets)
{
return mosquitto_loop_write(m_mosq, max_packets);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::loop_forever(int timeout, int max_packets)
{
return mosquitto_loop_forever(m_mosq, timeout, max_packets);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::loop_start()
{
return mosquitto_loop_start(m_mosq);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::loop_stop(bool force)
{
return mosquitto_loop_stop(m_mosq, force);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
bool mosquittopp::want_write()
{
return mosquitto_want_write(m_mosq);
}
2025-09-17 12:19:46 +02:00
2015-01-27 01:32:20 +01:00
int mosquittopp::opts_set(enum mosq_opt_t option, void *value)
{
return mosquitto_opts_set(m_mosq, option, value);
}
2025-09-17 12:19:46 +02:00
int mosquittopp::int_option(enum mosq_opt_t option, int value)
{
return mosquitto_int_option(m_mosq, option, value);
}
2025-09-17 12:19:46 +02:00
int mosquittopp::string_option(enum mosq_opt_t option, const char *value)
{
return mosquitto_string_option(m_mosq, option, value);
}
2025-09-17 12:19:46 +02:00
int mosquittopp::void_option(enum mosq_opt_t option, void *value)
{
return mosquitto_void_option(m_mosq, option, value);
}
2025-09-17 12:19:46 +02:00
2014-07-02 21:45:26 +02:00
int mosquittopp::threaded_set(bool threaded)
{
return mosquitto_threaded_set(m_mosq, threaded);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
void mosquittopp::user_data_set(void *userdata)
{
mosquitto_user_data_set(m_mosq, userdata);
}
2025-09-17 12:19:46 +02:00
2014-09-30 02:04:10 +02:00
int mosquittopp::socks5_set(const char *host, int port, const char *username, const char *password)
{
return mosquitto_socks5_set(m_mosq, host, port, username, password);
}
2014-05-08 00:27:00 +02:00
int mosquittopp::tls_set(const char *cafile, const char *capath, const char *certfile, const char *keyfile, int (*pw_callback)(char *buf, int size, int rwflag, void *userdata))
{
return mosquitto_tls_set(m_mosq, cafile, capath, certfile, keyfile, pw_callback);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::tls_opts_set(int cert_reqs, const char *tls_version, const char *ciphers)
{
return mosquitto_tls_opts_set(m_mosq, cert_reqs, tls_version, ciphers);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::tls_insecure_set(bool value)
{
return mosquitto_tls_insecure_set(m_mosq, value);
}
2025-09-17 12:19:46 +02:00
2014-05-08 00:27:00 +02:00
int mosquittopp::tls_psk_set(const char *psk, const char *identity, const char *ciphers)
{
return mosquitto_tls_psk_set(m_mosq, psk, identity, ciphers);
}
}