mirror of
https://github.com/ZeroTier/ZeroTierOne
synced 2025-08-14 10:37:33 -07:00
Beginning CMake configuration for ZT
Only tested on Windows so far
This commit is contained in:
parent
af5d3a7f0b
commit
0b3b5f6174
111 changed files with 19586 additions and 36 deletions
128
ext/librabbitmq/README.md
Normal file
128
ext/librabbitmq/README.md
Normal file
|
@ -0,0 +1,128 @@
|
|||
# RabbitMQ C AMQP client library
|
||||
|
||||
[](http://travis-ci.org/alanxz/rabbitmq-c)
|
||||
|
||||
[](https://coveralls.io/github/alanxz/rabbitmq-c?branch=master)
|
||||
|
||||
## Introduction
|
||||
|
||||
This is a C-language AMQP client library for use with v2.0+ of the
|
||||
[RabbitMQ](http://www.rabbitmq.com/) broker.
|
||||
|
||||
- <http://github.com/alanxz/rabbitmq-c>
|
||||
|
||||
Announcements regarding the library are periodically made on the
|
||||
rabbitmq-c-users and cross-posted to rabbitmq-users.
|
||||
|
||||
- <https://groups.google.com/forum/#!forum/rabbitmq-c-users>
|
||||
- <https://groups.google.com/forum/#!forum/rabbitmq-users>
|
||||
|
||||
## Latest Stable Version
|
||||
|
||||
The latest stable release of rabbitmq-c can be found at:
|
||||
|
||||
- <https://github.com/alanxz/rabbitmq-c/releases/latest>
|
||||
|
||||
## Documentation
|
||||
|
||||
API documentation for v0.8.0+ can viewed from:
|
||||
|
||||
<http://alanxz.github.io/rabbitmq-c/docs/0.8.0/>
|
||||
|
||||
## Getting started
|
||||
|
||||
### Building and installing
|
||||
|
||||
#### Prereqs:
|
||||
- [CMake v2.6 or better](http://www.cmake.org/)
|
||||
- A C compiler (GCC 4.4+, clang, and MSVC are test. Other compilers may also
|
||||
work)
|
||||
- *Optionally* [OpenSSL](http://www.openssl.org/) v0.9.8+ to enable support for
|
||||
connecting to RabbitMQ over SSL/TLS
|
||||
- *Optionally* [POpt](http://freecode.com/projects/popt) to build some handy
|
||||
command-line tools.
|
||||
- *Optionally* [XmlTo](https://fedorahosted.org/xmlto/) to build man pages for
|
||||
the handy command-line tools
|
||||
- *Optionally* [Doxygen](http://www.stack.nl/~dimitri/doxygen/) to build
|
||||
developer API documentation.
|
||||
|
||||
After downloading and extracting the source from a tarball to a directory
|
||||
([see above](#latest-stable-version)), the commands to build rabbitmq-c on most
|
||||
systems are:
|
||||
|
||||
mkdir build && cd build
|
||||
cmake ..
|
||||
cmake --build [--config Release] .
|
||||
|
||||
The --config Release flag should be used in multi-configuration generators e.g.,
|
||||
Visual Studio or XCode.
|
||||
|
||||
It is also possible to point the CMake GUI tool at the CMakeLists.txt in the root of
|
||||
the source tree and generate build projects or IDE workspace
|
||||
|
||||
Installing the library and optionally specifying a prefix can be done with:
|
||||
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
|
||||
cmake --build . [--config Release] --target install
|
||||
|
||||
More information on CMake can be found on its FAQ (http://www.cmake.org/Wiki/CMake_FAQ)
|
||||
|
||||
Other interesting flags that can be passed to CMake:
|
||||
|
||||
* `BUILD_EXAMPLES=ON/OFF` toggles building the examples. ON by default.
|
||||
* `BUILD_SHARED_LIBS=ON/OFF` toggles building rabbitmq-c as a shared library.
|
||||
ON by default.
|
||||
* `BUILD_STATIC_LIBS=ON/OFF` toggles building rabbitmq-c as a static library.
|
||||
OFF by default.
|
||||
* `BUILD_TESTS=ON/OFF` toggles building test code. ON by default.
|
||||
* `BUILD_TOOLS=ON/OFF` toggles building the command line tools. By default
|
||||
this is ON if the build system can find the POpt header and library.
|
||||
* `BUILD_TOOLS_DOCS=ON/OFF` toggles building the man pages for the command line
|
||||
tools. By default this is ON if BUILD_TOOLS is ON and the build system can
|
||||
find the XmlTo utility.
|
||||
* `ENABLE_SSL_SUPPORT=ON/OFF` toggles building rabbitmq-c with SSL support. By
|
||||
default this is ON if the OpenSSL headers and library can be found.
|
||||
* `BUILD_API_DOCS=ON/OFF` - toggles building the Doxygen API documentation, by
|
||||
default this is OFF
|
||||
|
||||
## Running the examples
|
||||
|
||||
Arrange for a RabbitMQ or other AMQP server to be running on
|
||||
`localhost` at TCP port number 5672.
|
||||
|
||||
In one terminal, run
|
||||
|
||||
./examples/amqp_listen localhost 5672 amq.direct test
|
||||
|
||||
In another terminal,
|
||||
|
||||
./examples/amqp_sendstring localhost 5672 amq.direct test "hello world"
|
||||
|
||||
You should see output similar to the following in the listener's
|
||||
terminal window:
|
||||
|
||||
Delivery 1, exchange amq.direct routingkey test
|
||||
Content-type: text/plain
|
||||
----
|
||||
00000000: 68 65 6C 6C 6F 20 77 6F : 72 6C 64 hello world
|
||||
0000000B:
|
||||
|
||||
## Writing applications using `librabbitmq`
|
||||
|
||||
Please see the `examples` directory for short examples of the use of
|
||||
the `librabbitmq` library.
|
||||
|
||||
### Threading
|
||||
|
||||
You cannot share a socket, an `amqp_connection_state_t`, or a channel
|
||||
between threads using `librabbitmq`. The `librabbitmq` library is
|
||||
built with event-driven, single-threaded applications in mind, and
|
||||
does not yet cater to any of the requirements of `pthread`ed
|
||||
applications.
|
||||
|
||||
Your applications instead should open an AMQP connection (and an
|
||||
associated socket, of course) per thread. If your program needs to
|
||||
access an AMQP connection or any of its channels from more than one
|
||||
thread, it is entirely responsible for designing and implementing an
|
||||
appropriate locking scheme. It will generally be much simpler to have
|
||||
a connection exclusive to each thread that needs AMQP service.
|
Loading…
Add table
Add a link
Reference in a new issue