1 module mosquitto.api.rtload;
2 
3 import mosquitto.api.types;
4 
5 version (ctlink) {} else:
6 
7 import ssll;
8 
9 version (Posix)   private enum libmosquitto_name = "libmosquitto.so";
10 version (Windows) private enum libmosquitto_name = "libmosquitto.dll";
11 
12 private __gshared void* lib;
13 
14 int initMosquittoLib()
15 {
16     if (lib is null)
17     {
18         lib = loadLibrary(libmosquitto_name);
19         loadApiSymbols();
20         return mosquitto_lib_init();
21     }
22     return MOSQ_ERR.SUCCESS;
23 }
24 
25 void cleanupMosquittoLib()
26 {
27     mosquitto_lib_cleanup();
28     unloadLibrary(&lib);
29 }
30 
31 mixin apiSymbols;
32 
33 alias mosq_tls_callback = extern(C) int function(char* buf, int size, int rwflag, void* userdata);
34 alias mosq_base_callback = extern(C) void function(mosquitto_t, void*, int);
35 alias mosq_msg_callback = extern(C) void function(mosquitto_t, void*, const mosquitto_message*);
36 alias mosq_sub_callback = extern(C) void function(mosquitto_t, void*, int, int, const int*);
37 alias mosq_log_callback = extern(C) void function(mosquitto_t, void*, int, const(char)*);
38 
39 @api("lib")
40 {
41     int mosquitto_lib_init() { mixin(rtLib); }
42     int mosquitto_lib_cleanup() { mixin(rtLib); }
43     mosquitto_t mosquitto_new(const(char)* id, bool clean_session, void* obj) { mixin(rtLib); }
44     void mosquitto_destroy(mosquitto_t mosq) { mixin(rtLib); }
45     int mosquitto_reinitialise(mosquitto_t mosq, const(char)* id, bool clean_session, void* obj) { mixin(rtLib); }
46     int mosquitto_will_set(mosquitto_t mosq, const(char)* topic, int payloadlen, const(void)* payload, int qos, bool retain) { mixin(rtLib); }
47     int mosquitto_will_clear(mosquitto_t mosq) { mixin(rtLib); }
48     int mosquitto_username_pw_set(mosquitto_t mosq, const(char)* username, const(char)* password) { mixin(rtLib); }
49     int mosquitto_connect(mosquitto_t mosq, const(char)* host, int port, int keepalive) { mixin(rtLib); }
50     int mosquitto_connect_bind(mosquitto_t mosq, const(char)* host, int port, int keepalive, const(char)* bind_address) { mixin(rtLib); }
51     int mosquitto_connect_async(mosquitto_t mosq, const(char)* host, int port, int keepalive) { mixin(rtLib); }
52     int mosquitto_connect_bind_async(mosquitto_t mosq, const(char)* host, int port, int keepalive, const(char)* bind_address) { mixin(rtLib); }
53     int mosquitto_connect_srv(mosquitto_t mosq, const(char)* host, int keepalive, const(char)* bind_address) { mixin(rtLib); }
54     int mosquitto_reconnect(mosquitto_t mosq) { mixin(rtLib); }
55     int mosquitto_reconnect_async(mosquitto_t mosq) { mixin(rtLib); }
56     int mosquitto_disconnect(mosquitto_t mosq) { mixin(rtLib); }
57     int mosquitto_publish(mosquitto_t mosq, int* mid, const(char)* topic, int payloadlen, const(void)* payload, int qos, bool retain) { mixin(rtLib); }
58     int mosquitto_subscribe(mosquitto_t mosq, int* mid, const(char)* sub, int qos) { mixin(rtLib); }
59     int mosquitto_unsubscribe(mosquitto_t mosq, int* mid, const(char)* sub) { mixin(rtLib); }
60     int mosquitto_message_copy(mosquitto_message* dst, const mosquitto_message* src) { mixin(rtLib); }
61     void mosquitto_message_free(mosquitto_message** message) { mixin(rtLib); }
62     int mosquitto_loop(mosquitto_t mosq, int timeout, int max_packets) { mixin(rtLib); }
63     int mosquitto_loop_forever(mosquitto_t mosq, int timeout, int max_packets) { mixin(rtLib); }
64     int mosquitto_loop_start(mosquitto_t mosq) { mixin(rtLib); }
65     int mosquitto_loop_stop(mosquitto_t mosq, bool force) { mixin(rtLib); }
66     int mosquitto_socket(mosquitto_t mosq) { mixin(rtLib); }
67     int mosquitto_loop_read(mosquitto_t mosq, int max_packets) { mixin(rtLib); }
68     int mosquitto_loop_write(mosquitto_t mosq, int max_packets) { mixin(rtLib); }
69     int mosquitto_loop_misc(mosquitto_t mosq) { mixin(rtLib); }
70     bool mosquitto_want_write(mosquitto_t mosq) { mixin(rtLib); }
71     int mosquitto_threaded_set(mosquitto_t mosq, bool threaded) { mixin(rtLib); }
72     int mosquitto_opts_set(mosquitto_t mosq, MOSQ_OPT option, void* value) { mixin(rtLib); }
73     int mosquitto_tls_set(mosquitto_t mosq,
74                             const(char)* cafile,   const(char)* capath,
75                             const(char)* certfile, const(char)* keyfile,
76                             mosq_tls_callback pw_callback) { mixin(rtLib); }
77     int mosquitto_tls_insecure_set(mosquitto_t mosq, bool value) { mixin(rtLib); } int mosquitto_tls_opts_set(mosquitto_t mosq, int cert_reqs, const(char)* tls_version, const(char)* ciphers) { mixin(rtLib); }
78     int mosquitto_tls_psk_set(mosquitto_t mosq, const(char)* psk, const(char)* identity,  const(char)* ciphers) { mixin(rtLib); }
79     void mosquitto_connect_callback_set(mosquitto_t mosq, mosq_base_callback on_connect) { mixin(rtLib); }
80     void mosquitto_disconnect_callback_set(mosquitto_t mosq, mosq_base_callback on_disconnect) { mixin(rtLib); }
81     void mosquitto_publish_callback_set(mosquitto_t mosq, mosq_base_callback on_publish) { mixin(rtLib); }
82     void mosquitto_message_callback_set(mosquitto_t mosq, mosq_msg_callback on_message) { mixin(rtLib); }
83     void mosquitto_subscribe_callback_set(mosquitto_t mosq, mosq_sub_callback on_subscribe) { mixin(rtLib); }
84     void mosquitto_unsubscribe_callback_set(mosquitto_t mosq, mosq_base_callback on_unsubscribe) { mixin(rtLib); }
85     void mosquitto_log_callback_set(mosquitto_t mosq, mosq_log_callback on_log) { mixin(rtLib); }
86     int mosquitto_reconnect_delay_set(mosquitto_t mosq, uint reconnect_delay, uint reconnect_delay_max,
87                                         bool reconnect_exponential_backoff) { mixin(rtLib); }
88     int mosquitto_max_inflight_messages_set(mosquitto_t mosq, uint max_inflight_messages) { mixin(rtLib); }
89     void mosquitto_message_retry_set(mosquitto_t mosq, uint message_retry) { mixin(rtLib); }
90     void mosquitto_user_data_set(mosquitto_t mosq, void* obj) { mixin(rtLib); }
91     int mosquitto_socks5_set(mosquitto_t mosq, const(char)* host, int port, const(char)* username, const(char)* password) { mixin(rtLib); }
92     const(char)* mosquitto_strerror(int mosq_errno) { mixin(rtLib); }
93     const(char)* mosquitto_connack_string(int connack_code) { mixin(rtLib); }
94     int mosquitto_sub_topic_tokenise(const(char)* subtopic, char*** topics, int* count) { mixin(rtLib); }
95     int mosquitto_sub_topic_tokens_free(char*** topics, int count) { mixin(rtLib); }
96     int mosquitto_topic_matches_sub(const(char)* sub, const(char)* topic, bool* result) { mixin(rtLib); }
97     int mosquitto_pub_topic_check(const(char)* topic) { mixin(rtLib); }
98     int mosquitto_sub_topic_check(const(char)* topic) { mixin(rtLib); }
99 }