12 releases (7 breaking)
0.9.0 | Oct 25, 2023 |
---|---|
0.8.1 | Mar 20, 2023 |
0.8.0 | Jan 12, 2023 |
0.7.1 | Dec 20, 2022 |
0.2.0 | Nov 21, 2018 |
#765 in Asynchronous
56,281 downloads per month
Used in 30 crates
(2 directly)
12MB
297K
SLoC
Low-level Eclipse Paho MQTT C Client Library Wrapper
An un-safe, low-level, wrapper around the Eclipse Paho C Library, which can be used to write Rust MQTT client library on memory-managed operating systems such as Linux/Posix, Mac, and Windows. This is primarily used by the Eclipse Paho Rust Library, which provides a safe Rust interface over this one.
This package can build the recommended version of Paho C automatically. This is the default behavior, which comes in withthe "bundled" feature. It uses the cmake crate which can also cross-compile the C library for most targets.
When not using the bundled build, it will attept to link to a pre-installed version of the library. It is fairly sensitive to the C version.
The current recommended Paho C version is: v1.3.13
Configurable Features
The default features are: ["bundled", "ssl"]
The full set of features include the following:
- "bundled" - Whether to build the Paho C library contained in the Git submodule. This is similar to the "vendored" feature in other Rust projects. If not selected, it will attempt to find and link to a pre-installed version of the Paho C library for the target.
- "build_bindgen" - Whether to generate the C language bindings for the target using bindgen. If not set, the build will attempt to find and use pre-built bindings for the target.
- "ssl" - Whether to enable the use of secure sockets and secure websocket connections.
- "vendored-ssl" - Whether to build OpenSSL. This passes the "vendored" option to the openssl-sys crate. This also selects the "ssl" option, if not already set.
The bundled feature requires CMake
and a C compiler for the target.
The vendored-ssl feature requires the target C compiler as well, but also requires Perl
and make
.
Using SSL/TLS
Starting with Version 0.5.0 we are using the openssl-sys crate which allows for further modification of the behavior through environment variables, such as specifying the location of the OpenSSL library or linking it statically.
For more information read the Rust OpenSSL Docs, carefully.
In particular:
-
If you use vendored-ssl, you need a C compiler for the target,
Perl
, andmake
. -
If you don't use vendored-ssl, it will attempt to use a package manager on the build host to find the library:
pkg-config
on Unix-like systems,Homebrew
on macOS, andvcpkg
on Windows. -
If all else fails, you may need to set the specific location of the library with an environment variable. For example, on Windows, you may need to do something like this:
set OPENSSL_DIR=C:\OpenSSL-Win64