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 }