Vortex Library has been implemented using one obligatory dependency: LibAxl (http://xml.aspl.es).
LibAxl is a runtime and memory efficient XML 1.0 implementation, built as a separated library to support all projects inside the Af-Arch initiative, including Vortex Library. The library is available at the same download location where Vortex Library is found. It also comes with a Microsoft Windows installer.
In order to activate the TLS profile support it is also required openssl (http://www.openssl.org) to be installed. This software is commonly found on every unix/GNU/Linux installation. Binaries are also available for Microsoft Windows platforms.
For the SASL profile family support it is also required GNU SASL (http://josefsson.org/gsasl/) to be installed.
Keep in mind that Vortex Library design allows to configure and build a library without TLS or SASL support. As a consequence, TLS profile and SASL profiles dependencies are optional.
Additionally, you can enable building vortex-client, a tool which allows to perform custom operations against BEEP peer (not only Vortex ones), by adding a new dependency: libreadline.
In the case of GNU/Linux (unix environment) the package system will provide you optional packages: openssl and gsasl.
To compile Axl Library you must follow standard autoconf procedure:
tar xzvf axl-XXX.tar.gz ./configure make make install
See Axl Library installation manual for more details: http://www.aspl.es/axl/html/axl_install.html
As an example, on a debian similar system, with deb based packaging, these dependencies can be installed using:
To activate TLS profile support:
apt-get install libssl-dev
To activate SASL profiles support:
apt-get install libgsasl7-dev
If you know about the exact information about how to install Vortex Library dependencies in your favorite system let us to know it. We will add that information on this manual.
For the LibAxl library you can use the installer provided for the Windows platform at the download page: http://www.sf.net/projects/vortexlibrary
Openssl binaries for windows platform could be found at: http://www.openssl.org/related/binaries.html
Previous package described DO NOT have pkg-config file configuration. This means you will have to configure the Makefile.win provided. Check the install section to know more about this.
Starting from Vortex Library 1.0.2, GNU SASL binaries for windows platform are also provided by the Vortex Library project at the same location with a windows installer.
If you try to use Vortex Library on Windows platform, but using the CygWin environment, the previous information is not valid for your case.
Previous package are compiled against the Microsoft Runtime (msvcrt.dll) and every program or library running inside the cygwin environment is compiled against (or linked to) cygwin1.dll. If you mix libraries or programs linked to both libraries you will get estrange hang ups.
On cygwin environment use the libraries provided by the cygwin package installation system. Keep in mind that running Vortex Library over Cygwin will force you to chose the GPL license for your application because the cygwin1.dll is license under the GPL.
No proprietary (closed source) development can be done using Cygwin environment.
For Microsoft Windows developers, there are already built win32 packages that includes an already built Vortex Library, with all dependencies, including all profiles. Check the Vortex download page: http://www.sf.net/projects/vortexlibrary
The BEEP Core definition found at (RFC3080 and RFC3081) defines what "must" and "should" be supported by any implementation. At this moment the Vortex Library support all sections including must and should requirements (including TLS and SASL profiles).
Vortex Library has been built using asynchronous sockets (non blocking call) with a thread model, each one working on specific tasks. Once the Vortex Library is started it creates 2 threads apart from the main thread doing the following task:
Apart from the 2 threads created plus the main one, the Vortex Library creates a thread pool already prepared to dispatch incoming frames inside user space function. The thread pool size can also be tweaked.