mosquitto/lib/net_mosq.h

74 lines
2.1 KiB
C
Raw Normal View History

2014-05-07 22:27:00 +00:00
/*
2016-07-08 08:42:24 +00:00
Copyright (c) 2010-2016 Roger Light <roger@atchoo.org>
2014-05-07 22:27:00 +00:00
All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License v1.0
and Eclipse Distribution License v1.0 which accompany this distribution.
The Eclipse Public License is available at
http://www.eclipse.org/legal/epl-v10.html
and the Eclipse Distribution License is available at
http://www.eclipse.org/org/documents/edl-v10.php.
Contributors:
Roger Light - initial implementation and documentation.
*/
#ifndef NET_MOSQ_H
#define NET_MOSQ_H
2014-05-07 22:27:00 +00:00
#ifndef WIN32
#include <unistd.h>
#else
#include <winsock2.h>
typedef int ssize_t;
#endif
2015-04-29 20:37:47 +00:00
#include "mosquitto_internal.h"
#include "mosquitto.h"
2014-05-07 22:27:00 +00:00
#ifdef WITH_BROKER
struct mosquitto_db;
#endif
#ifdef WIN32
# define COMPAT_CLOSE(a) closesocket(a)
# define COMPAT_ECONNRESET WSAECONNRESET
# define COMPAT_EWOULDBLOCK WSAEWOULDBLOCK
#else
# define COMPAT_CLOSE(a) close(a)
# define COMPAT_ECONNRESET ECONNRESET
# define COMPAT_EWOULDBLOCK EWOULDBLOCK
#endif
/* For when not using winsock libraries. */
#ifndef INVALID_SOCKET
#define INVALID_SOCKET -1
#endif
/* Macros for accessing the MSB and LSB of a uint16_t */
#define MOSQ_MSB(A) (uint8_t)((A & 0xFF00) >> 8)
#define MOSQ_LSB(A) (uint8_t)(A & 0x00FF)
int net__init(void);
2015-05-18 08:29:22 +00:00
void net__cleanup(void);
2014-05-07 22:27:00 +00:00
2015-05-18 08:29:22 +00:00
int net__socket_connect(struct mosquitto *mosq, const char *host, uint16_t port, const char *bind_address, bool blocking);
#ifdef WITH_BROKER
2015-05-18 08:29:22 +00:00
int net__socket_close(struct mosquitto_db *db, struct mosquitto *mosq);
#else
2015-05-18 08:29:22 +00:00
int net__socket_close(struct mosquitto *mosq);
#endif
int net__try_connect(struct mosquitto *mosq, const char *host, uint16_t port, mosq_sock_t *sock, const char *bind_address, bool blocking);
int net__socket_nonblock(mosq_sock_t sock);
int net__socketpair(mosq_sock_t *sp1, mosq_sock_t *sp2);
2014-05-07 22:27:00 +00:00
2015-05-18 08:29:22 +00:00
ssize_t net__read(struct mosquitto *mosq, void *buf, size_t count);
ssize_t net__write(struct mosquitto *mosq, void *buf, size_t count);
2014-05-07 22:27:00 +00:00
#ifdef WITH_TLS
2015-05-18 08:29:22 +00:00
int net__socket_apply_tls(struct mosquitto *mosq);
int net__socket_connect_tls(struct mosquitto *mosq);
2014-05-07 22:27:00 +00:00
#endif
#endif