Vortex Library implementation and dependencies

Vortex Library dependencies

Vortex Library have been implemented using only two dependencies: libglib-2.0 (http://www.gtk.org) (at least 2.6) and libxml-2.0 (http://www.xmlsoft.org). They are really common across GNU/Linux platforms and can be found easily on Microsoft Windows Platforms.

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 the libglib-2.0 and libxml-2.0 development package. On debian system deb package can be installed using:

   apt-get install libglib2.0-dev libxml2-dev libssl-dev

And optionally, 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

On Windows platform you can try to download the libglib-2.0 package provided by Tor Liqvist at http://www.gimp.org/win32 . For libxml-2.0 package we recommend to use the one provided by the gnuwin32 project at http://gnuwin32.sf.net.

Do not use the package provided by Igor Zlatkovic on the same page than libglib-2.0 (http://www.gimp.org/win32). It has a bug that makes Vortex Library to break.

Openssl binaries for windows platform could be found at: http://www.openssl.org/related/binaries.html

Previous package I described for windows 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.

GNU SASL binaries for windows platform are not available. It has to be built from GNU SASL sources using mingw32 tools. If you know about someone supporting win32 binaries please let us to know it.

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.

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 have 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 3 threads apart from the main thread doing the following task:

Apart from the 3 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.