c-mosquitto 0.1.4.1 → 0.1.5.0
raw patch · 4 files changed
+42/−232 lines, 4 files
Files
- c-mosquitto.cabal +6/−5
- src/Network/Mosquitto.c +0/−217
- src/Network/Mosquitto.hs +36/−9
- src/Network/Mosquitto/Internal/Types.hs +0/−1
c-mosquitto.cabal view
@@ -1,7 +1,8 @@ name: c-mosquitto-version: 0.1.4.1+version: 0.1.5.0 synopsis: Simpe mosquito MQTT binding able to work with the Amazons IoT--- description:+description: Simpe mosquito MQTT binding+ able to work with the Amazons IoT but it should work with other providers homepage: https://github.com/tolysz/c-mosquitto#readme license: BSD3 license-file: LICENSE@@ -28,9 +29,9 @@ , bytestring default-language: Haskell2010 - cc-options: -Wall -O2- if impl(ghc < 8.2)- c-sources: src/Network/Mosquitto.c+ cc-options: -Wall+-- if impl(ghc < 8.2)+-- c-sources: src/Network/Mosquitto.c extra-libraries: mosquitto executable c-mosquitto
− src/Network/Mosquitto.c
@@ -1,217 +0,0 @@--#include <stdio.h>--#include <mosquitto.h>--int inline_c_Network_Mosquitto_0_af973a022b4e1bdc5e364f24abf1f96042f22074(struct mosquitto_message * ptr_inline_c_0) {-return ( ptr_inline_c_0->mid);-}---char * inline_c_Network_Mosquitto_1_1ffdbc152633d765d9af8dc1a99fc84de7cdc43d(struct mosquitto_message * ptr_inline_c_0) {-return (ptr_inline_c_0 -> topic );-}---char * inline_c_Network_Mosquitto_2_2a9eed77120139b9bb64a7f6606b06cf995c53d0(struct mosquitto_message * ptr_inline_c_0) {-return (ptr_inline_c_0 -> payload );-}---int inline_c_Network_Mosquitto_3_a343e4f7dc55e7308355464e738a9402fb43c490(struct mosquitto_message * ptr_inline_c_0) {-return (ptr_inline_c_0 -> payloadlen );-}---int inline_c_Network_Mosquitto_4_f085573633eba51cb044b22361e904fc48b4a9f3(struct mosquitto_message * ptr_inline_c_0) {-return ( ptr_inline_c_0->qos);-}---bool inline_c_Network_Mosquitto_5_ceaf89a39d1e88cb7f623dfa0d464582f936ed4f(struct mosquitto_message * ptr_inline_c_0) {-return ( ptr_inline_c_0->retain);-}---int inline_c_Network_Mosquitto_6_d5c23f7055ae67c09ff206dd6a9cc4f020e85c61() {-return ( mosquitto_lib_init() );-}---int inline_c_Network_Mosquitto_7_f62c1e89d0a67f1afbdb4eb34ac4bfb9ad34dd96() {-return ( mosquitto_lib_cleanup() );-}---void inline_c_Network_Mosquitto_8_7dea8f89bfffce831052393584adc3a08aa14253(int * a_inline_c_0, int * b_inline_c_1, int * c_inline_c_2) {- mosquitto_lib_version(a_inline_c_0,b_inline_c_1,c_inline_c_2); -}---struct mosquitto * inline_c_Network_Mosquitto_9_d9f94938a97be80fe91fbbdf0353d48a93b0f8eb(char * userId_inline_c_0, bool clearSession_inline_c_1) {-- struct mosquitto * p =- mosquitto_new( userId_inline_c_0- , clearSession_inline_c_1- , 0 // (void * ptrUserData)- );- mosquitto_threaded_set(p, true);- return p;- -}---void inline_c_Network_Mosquitto_10_403fc80492c1877303448c739bc735b61f91b41d(struct mosquitto * ptr_inline_c_0) {-- mosquitto_destroy(ptr_inline_c_0)- ;-}---void inline_c_Network_Mosquitto_11_2e52b4e387ff964e8763e13931c04b69aff55430(struct mosquitto * pMosq_inline_c_0, char * caFile_inline_c_1, char * certFile_inline_c_2, char * keyFile_inline_c_3) {-- mosquitto_tls_set( pMosq_inline_c_0- , caFile_inline_c_1- , 0- , certFile_inline_c_2- , keyFile_inline_c_3- , 0- )- ;-}---int inline_c_Network_Mosquitto_12_5df2159b027edc29e63231d331ce11cb9a71baa9(struct mosquitto * pMosq_inline_c_0, int reconnectDelay_inline_c_1, int reconnectDelayMax_inline_c_2, bool exponential_inline_c_3) {-return (- mosquitto_reconnect_delay_set- ( pMosq_inline_c_0- , reconnectDelay_inline_c_1- , reconnectDelayMax_inline_c_2- , exponential_inline_c_3- )- );-}---int inline_c_Network_Mosquitto_13_98b22e49ca780ebc944cedb809c5a5097eea6100(struct mosquitto * pMosq_inline_c_0, char * hostname_inline_c_1, int port_inline_c_2, int keepAlive_inline_c_3) {-return (- mosquitto_connect( pMosq_inline_c_0- , hostname_inline_c_1- , port_inline_c_2- , keepAlive_inline_c_3- )- );-}---void inline_c_Network_Mosquitto_14_9b2300d6db40d43ebb6d72e3b5a020f27089aa9f(struct mosquitto * pMosq_inline_c_0, void (* on_subscribe_inline_c_1)(struct mosquitto *, void *, int , int , const int *)) {-- mosquitto_subscribe_callback_set- ( pMosq_inline_c_0- , on_subscribe_inline_c_1- );- -}---void inline_c_Network_Mosquitto_15_c37f43d389a2b1e4a300492e3a711a4a76e04f57(struct mosquitto * pMosq_inline_c_0, void (* on_connect_inline_c_1)(struct mosquitto *, void *, int )) {-- mosquitto_connect_callback_set- ( pMosq_inline_c_0- , on_connect_inline_c_1- );- -}---void inline_c_Network_Mosquitto_16_73f1686f2c07e9747998ec5d1a023376b6401ac8(struct mosquitto * pMosq_inline_c_0, void (* on_disconnect_inline_c_1)(struct mosquitto *, void *, int )) {-- mosquitto_disconnect_callback_set- ( pMosq_inline_c_0- , on_disconnect_inline_c_1- );- -}---void inline_c_Network_Mosquitto_17_374d617a6dd1e6b1b85395b1c3a2043f8a86cd2b(struct mosquitto * pMosq_inline_c_0, void (* on_log_inline_c_1)(struct mosquitto *, void *, int , const char *)) {-- mosquitto_log_callback_set- ( pMosq_inline_c_0- , on_log_inline_c_1- );- -}---void inline_c_Network_Mosquitto_18_2dd27966a8764a1bdd083baf0f4690e8e2ef1475(struct mosquitto * pMosq_inline_c_0, void (* on_message_inline_c_1)(struct mosquitto *, void *, const struct mosquitto_message *)) {-- mosquitto_message_callback_set- ( pMosq_inline_c_0- , on_message_inline_c_1- );- -}---void inline_c_Network_Mosquitto_19_4b8c8d8774deee8ab1d79ed9d536914d1ca65d06(struct mosquitto * pMosq_inline_c_0) {-- mosquitto_loop_forever(pMosq_inline_c_0, -1, 1)- ;-}---void inline_c_Network_Mosquitto_20_969dca874ea20234f06362014c8097eab6c27f8f(struct mosquitto * pMosq_inline_c_0, bool isInsecure_inline_c_1) {-- mosquitto_tls_insecure_set(pMosq_inline_c_0, isInsecure_inline_c_1)- ;-}---int inline_c_Network_Mosquitto_21_26af9a8807a3b025f22ffd1ecf26e974a708200b(struct mosquitto * pMosq_inline_c_0, char * topic_inline_c_1, long payload_inline_c_2, char * payload_inline_c_3, int qos_inline_c_4, bool retain_inline_c_5) {-return (- mosquitto_will_set- ( pMosq_inline_c_0- , topic_inline_c_1- , payload_inline_c_2- , payload_inline_c_3- , qos_inline_c_4- , retain_inline_c_5- )- );-}---int inline_c_Network_Mosquitto_22_695260a2b677f2d71d3523f2e5330bb74a20055c(struct mosquitto * pMosq_inline_c_0) {-return (- mosquitto_will_clear(pMosq_inline_c_0)- );-}---void inline_c_Network_Mosquitto_23_61ffbebe13cb650a9058a8b715732b7a82987f92(struct mosquitto * pMosq_inline_c_0, char * topic_inline_c_1, long payload_inline_c_2, char * payload_inline_c_3, int qos_inline_c_4, bool retain_inline_c_5) {-- mosquitto_publish- ( pMosq_inline_c_0- , 0- , topic_inline_c_1- , payload_inline_c_2- , payload_inline_c_3- , qos_inline_c_4- , retain_inline_c_5- )- ;-}---void inline_c_Network_Mosquitto_24_491fe5e8a7e8888c30139bd3dcd275298b39e3a8(struct mosquitto * pMosq_inline_c_0, char * topic_inline_c_1, int qos_inline_c_2) {-- mosquitto_subscribe- ( pMosq_inline_c_0- , 0- , topic_inline_c_1- , qos_inline_c_2- )- ;-}-
src/Network/Mosquitto.hs view
@@ -20,7 +20,6 @@ import qualified Language.C.Inline as C import qualified Language.C.Inline.Unsafe as CU- import Language.C.Inline.TypeLevel import System.IO.Unsafe (unsafePerformIO)@@ -72,7 +71,7 @@ newMosquitto clearSession (C8.pack -> userId) _userData = do fp <- newForeignPtr_ <$> [C.block|struct mosquitto *{ struct mosquitto * p =- mosquitto_new( $bs-ptr:userId+ mosquitto_new( $bs-cstr:userId , $(bool clearSession) , 0 // (void * ptrUserData) );@@ -93,14 +92,27 @@ withPtr mosq $ \pMosq -> [C.exp|void{ mosquitto_tls_set( $(struct mosquitto *pMosq)- , $bs-ptr:caFile+ , $bs-cstr:caFile , 0- , $bs-ptr:certFile- , $bs-ptr:keyFile+ , $bs-cstr:certFile+ , $bs-cstr:keyFile , 0 ) }|] +setTlsNoClientCert :: Mosquitto a -> String -> IO ()+setTlsNoClientCert mosq (C8.pack -> caFile) =+ withPtr mosq $ \pMosq ->+ [C.exp|void{+ mosquitto_tls_set( $(struct mosquitto *pMosq)+ , $bs-cstr:caFile+ , 0+ , 0+ , 0+ , 0+ )+ }|]+ setReconnectDelay :: Mosquitto a -- ^ mosquitto instance -> Bool -- ^ exponential backoff@@ -118,12 +130,27 @@ ) }|] +setUsernamePassword+ :: Mosquitto a -- ^ mosquitto instance+ -> String -- ^ username+ -> String -- ^ password+ -> IO Int+setUsernamePassword mosq (C8.pack -> user) (C8.pack -> pwd) =+ fmap fromIntegral <$> withPtr mosq $ \pMosq ->+ [C.exp|int{+ mosquitto_username_pw_set+ ( $(struct mosquitto *pMosq)+ , $bs-cstr:user+ , $bs-cstr:pwd+ )+ }|]+ connect :: Mosquitto a -> String -> Int -> Int -> IO Int connect mosq (C8.pack -> hostname) (fromIntegral -> port) (fromIntegral -> keepAlive) = fmap fromIntegral <$> withPtr mosq $ \pMosq -> [C.exp|int{ mosquitto_connect( $(struct mosquitto *pMosq)- , $bs-ptr:hostname+ , $bs-cstr:hostname , $(int port) , $(int keepAlive) )@@ -224,7 +251,7 @@ [C.exp|int{ mosquitto_will_set ( $(struct mosquitto *pMosq)- , $bs-ptr:topic+ , $bs-cstr:topic , $bs-len:payload , $bs-ptr:payload , $(int qos)@@ -245,7 +272,7 @@ mosquitto_publish ( $(struct mosquitto *pMosq) , 0- , $bs-ptr:topic+ , $bs-cstr:topic , $bs-len:payload , $bs-ptr:payload , $(int qos)@@ -260,7 +287,7 @@ mosquitto_subscribe ( $(struct mosquitto *pMosq) , 0- , $bs-ptr:topic+ , $bs-cstr:topic , $(int qos) ) }|]
src/Network/Mosquitto/Internal/Types.hs view
@@ -18,7 +18,6 @@ -- haskell types newtype Mosquitto a = Mosquitto { unMosquitto :: ForeignPtr (C (Mosquitto a))}--- newtype Message = Message { unMessage :: Ptr (C Message)} newtype RawMessage = RawMessage { unRawMessage :: Ptr (C RawMessage)} data Message = Message