1#if !defined(__MQTT_PAL_H__)
28#if defined(__cplusplus)
74 #define MQTT_PAL_HTONS(s)
80 #define MQTT_PAL_NTOHS(s)
86 #define MQTT_PAL_TIME()
92 #define MQTT_PAL_MUTEX_INIT(mtx_ptr)
98 #define MQTT_PAL_MUTEX_LOCK(mtx_ptr)
104 #define MQTT_PAL_MUTEX_UNLOCK(mtx_ptr)
119#elif defined(__unix__) || defined(__APPLE__) || defined(__NuttX__)
125 #include <arpa/inet.h>
128 #define MQTT_PAL_HTONS(s) htons(s)
129 #define MQTT_PAL_NTOHS(s) ntohs(s)
131 #define MQTT_PAL_TIME() time(NULL)
136 #define MQTT_PAL_MUTEX_INIT(mtx_ptr) pthread_mutex_init(mtx_ptr, NULL)
137 #define MQTT_PAL_MUTEX_LOCK(mtx_ptr) pthread_mutex_lock(mtx_ptr)
138 #define MQTT_PAL_MUTEX_UNLOCK(mtx_ptr) pthread_mutex_unlock(mtx_ptr)
140 #if !defined(MQTT_USE_CUSTOM_SOCKET_HANDLE)
141 #if defined(MQTT_USE_MBEDTLS)
142 struct mbedtls_ssl_context;
143 typedef struct mbedtls_ssl_context *mqtt_pal_socket_handle;
144 #elif defined(MQTT_USE_WOLFSSL)
145 #include <wolfssl/ssl.h>
146 typedef WOLFSSL* mqtt_pal_socket_handle;
147 #elif defined(MQTT_USE_BIO)
148 #include <openssl/bio.h>
149 typedef BIO* mqtt_pal_socket_handle;
150 #elif defined(MQTT_USE_BEARSSL)
153 typedef struct _bearssl_context {
154 br_ssl_client_context sc;
155 br_x509_minimal_context xc;
156 br_sslio_context ioc;
158 br_x509_trust_anchor *anchOut;
160 int (*low_read)(
void *read_context,
unsigned char *buf,
size_t len);
161 int (*low_write)(
void *write_context,
const unsigned char *buf,
size_t len);
164 typedef bearssl_context* mqtt_pal_socket_handle;
166 typedef int mqtt_pal_socket_handle;
169#elif defined(_MSC_VER) || defined(WIN32)
171 #include <winsock2.h>
176 typedef SSIZE_T ssize_t;
177 #define MQTT_PAL_HTONS(s) htons(s)
178 #define MQTT_PAL_NTOHS(s) ntohs(s)
180 #define MQTT_PAL_TIME() time(NULL)
185 #define MQTT_PAL_MUTEX_INIT(mtx_ptr) InitializeCriticalSection(mtx_ptr)
186 #define MQTT_PAL_MUTEX_LOCK(mtx_ptr) EnterCriticalSection(mtx_ptr)
187 #define MQTT_PAL_MUTEX_UNLOCK(mtx_ptr) LeaveCriticalSection(mtx_ptr)
190 #if !defined(MQTT_USE_CUSTOM_SOCKET_HANDLE)
191 #if defined(MQTT_USE_BIO)
192 #include <openssl/bio.h>
193 typedef BIO* mqtt_pal_socket_handle;
195 typedef SOCKET mqtt_pal_socket_handle;
219ssize_t
mqtt_pal_sendall(mqtt_pal_socket_handle fd,
const void* buf,
size_t len,
int flags);
241#if defined(__cplusplus)
ssize_t mqtt_pal_recvall(mqtt_pal_socket_handle fd, void *buf, size_t bufsz, int flags)
Non-blocking receive all the byte available.
void mqtt_pal_mutex_t
type of the argument that is passed to MQTT_PAL_MUTEX_INIT(), MQTT_PAL_MUTEX_LOCK() and MQTT_PAL_MUTE...
Definition mqtt_pal.h:117
ssize_t mqtt_pal_sendall(mqtt_pal_socket_handle fd, const void *buf, size_t len, int flags)
Sends all the bytes in a buffer.
void mqtt_pal_time_t
return type of MQTT_PAL_TIME()
Definition mqtt_pal.h:110