Vortex Library implementation and dependencies

Vortex Library dependencies

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.

Vortex Library dependencies on GNU/Linux Environment

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

An an example, on a debian similar system, with deb based packaging, these dependecies 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.

Vortex Library dependencies using Mingw Environment

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.

Vortex Library dependencies using Cygwin Environment

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.

Microsoft Windows installer

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

Notes about Vortex Library implementation

The BEEP Core definition (RFC3080 and RFC3081) defines what must or 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 build using asynchronous sockets (not blocking model) 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 pool of threads already prepared to dispatch incoming frames inside user space function. The thread pool size can also be tweaked.