[Vortex] [ANN] Vortex Library 0.9.0 is ready!
Francis Brosnan Blazquez
francis at aspl.es
Fri Jul 7 22:15:19 CEST 2006
## Vortex Library 0.9.0 Stable Release ##
Advanced Software Production Line is proud to announce the Vortex
Library 0.9.0 availability: an open source "BEEP Core" protocol
implementation written in C, mapped onto TCP/IP.
Vortex Library has been developed inside the Af-Arch project as its
data transport layer.
Vortex Library is a stable and robust application protocol
development toolkit. Currently it is running under Microsoft Windows
and GNU/Linux platforms.
Check out the following links to get ready with Vortex Library:
[Vortex Library homepage]
[Sources and Win32 binaries]
[Af-Arch homepage where Vortex Library is being developed]
[BEEP Core community web site]
[Axl Library, XML 1.0 implementation]
The release in short
A complete XML-RPC over BEEP implementation inside Vortex Library is
now completed with the new xml-rpc-gen tool. This protocol compiler
allows to produce client stubs and XML-RPC servers from a few
lines. See Vortex XML-RPC Manual for more details.
Milton Yates (SASL server side API extension with a user defined
pointer), Gustavo Sverzut (patches and bug reports related to SEQ
frames and frame re-sequence code), Philip Kovacs (bug reports, test
cases and suggestions done).
Changes since 0.8.11
* [fix] fixing c header for server stub generation.
* [fix] fixing some comments and adding more documentation to the
* [new] finished a initial complete implementation to produce an
XML-RPC server component from the XDL specification. Great!!
* [fix] updating XDL draft to replace the internal node reference
<value> for a type node <type> for structure members.
* [fix] documentation fixings (XML-RPC).
* [fix] added a new section to the manual explaining how MIME
information is used inside Vortex Library.
* [new] adding initial implementation to create C stub headers (and
its body) for struct support for the xml-rpc-gen tool.
* [new] adding support to generate the struct support header file for
the C stub.
* [new] Adding initial complete support to produce a struct header
with marshalling, unmarshalling and deallocation functions inside
the C stub header: GREAT!!!
* [fix] Making struct members to allocate attributes configured for
those items that require it (string, base64, struct and array).
* [fix] making vortex_exit call to not produce the exit sequence
unless detected that the library was initialized.
* [fix] working on adding XmlRpcArray parameter support for the
* [fix] adding missing reference to the xml-rpc.dtd file to be
installed at the Makefile.am.
* [fix] Updating xml-rpc.dtd to allow optional empty definitions for
<params> node (0 parameters).
* [fix] some updates to include TLS files (and the missing
libeay32.dll) into the w32 bundle. Updated NSI definitions and
Makefile.win to include those files.
* [new] Adding more API to the XML-RPC implementation for XmlRpcArray
* [new] Adding two new unmarshaller functions to allow building C
stubs that supports XmlRpcStruct and XmlRpcArray as incoming
parameters and as results:
* [new] adding support to xml-rpc-gen tool to locate data files at the
installation directory (and the current directory). Data directory
is now configurable. API borrowed from vortex support module.
* [new] adding more API to the thread pool to allow configure the
exclusive thread pool behavior and the number of threads
available. API added:
* [new] adding initial support to create the array module definition,
for the C stub, for the xml-rpc-gen tool. Header definition is now
complete. Body definition partially defined.
* [fix] updating C array module support for the C stub generated by
the xml-rpc-gen tool to create the marshaler, the unmarshaller and
the creation support function.
* [fix] completed initial version for the array module generation
(XML-RPC interface). Now xml-rpc-gen tool creates an interface for
every array definition which includes marshalers, deallocation
functions, and operational functions.
* [fix] fixing all compilation errors found for the array interface
generated for the initial tests.
* [fix] fixing a not proper SEQ frame generation while receiving a
message with only one byte of content.
* [fix] updating main web-page to include a reference at the main page
for commercial services around Vortex Library.
* [fix] more updates to the XML-RPC implementation to support complex
structures. API added:
* [fix] re-written method value marshalling to support recurvise
definitions. API added:
* [fix] added more API to manage XmlRpcStruct and its native
representation for the up coming xml-rpc-gen compiler. API added:
* [fix] adding more method values to allow user space to provide
already allocated strings, avoiding double allocations. API added:
- XML_RPC_STRING_REF_VALUE (enum value)
* [fix] adding support to the xml-rpc-gen tool to create support
modules for struct and arrays, making it more usable that the low
level representation XmlRpcStruct and XmlRpcArray.
* [fix] adding a set of test to check xml-rpc-gen generated
source. Tests added:
* [fix] really huge update for server side support to struct parameters
and struct as service result.
* [fix] fixing a not proper handling for the vortex sequencer loop
which, under some circumstances, was queueing twice times the same
vortex sequencer packet.
* [fix] fixing a not proper checking placed to avoid vortex channel
module to produce a SEQ frame for a channel that is being
closed. Because the problem to avoid is to not reply for the close
configuration message (<ok />) with a SEQ frame, the check have been
updated to be more accurate.
* [fix] making vortex_init function to add one more path to lookup for
data files (../data) to make it work for source code distributed as
* [new] adding support to the xml-rpc-gen tool for the IDL structured
format. Now the tools support a xml based representation (the native
one) and a structure format that is more similar to common IDL
syntax. This commit supports the server definition with services
that only uses basic types.
* [fix] Making SASL module, at the server side, to store auth
properties used for the authentication process, allowing to make
vortex_sasl_get_propertie to work.
* [new] Adding a new function to the SASL auth module to enable user
application, at the client and server side, to get the auth method
used for a successful authentication:
* [fix] Updating vortex-sasl-listener.c test to show how to use the
API to properly check the auth state.
* [fix] fixing vortex_listener_wait documentation.
* [new] Adding a new API to allow getting notification about new
connections accepted. API added:
- vortex_connection_set_on_connection_accepted (function)
- VortexOnAcceptedConnection (handler).
* [fix] Updating vortex-simple-listener to include an example about
* [fix] Adding more documentation to vortex_init function explaining
how to reactivate the glib log handling.
* [fix] fixing a seg fault while compiling an XML-RPC interface
definition that returns an string.
* [new] Extending on close connection notification API for a function
signature that also receives a user defined pointer. API added:
- vortex_connection_set_on_close_full (function)
- VortexConnectionOnCloseFull (handler)
* [fix] making vortex_init to use the default GLib log handling if
detected that the log source domain is not vortex and the log is
* [new] replacing all calls to g_log with vortex_log. Added support to
compilation process to remove/disable all calls to perform a console
log. Updated configure.ac and Makefile.am inside src/ directory.
* [new] added support to xml-rpc-gen tool to be able to parse C
comments (/* .. */) and C++ comments (//..) inside IDL definitions.
* [new] added initial support to xml-rpc-gen to define structures
inside the IDL definition format.
* [fix] fixed a but while producing a service that don't receive any
parameter. In was causing to segfault the xml-rpc-gen tool.
* [new] adding all tests for the XML-RPC protocol (reg-test01.idl up
to reg-test05.idl) implementing the same example as the ones using
the XDL format, but using the IDL language format.
* [fix] making vortex_frame_readline to check vortex_connection_ok to
avoid dropping messages if the connection have been detected to be
* [fix] making vortex_reader loop to check for "Interrupted system
call" (EINTR) if the waiting call is blocked. (Wrong checking
* [fix] adding .def definition file (export symbols for windows) and
modifying Makefile.am to generate this file.
* [fix] fixing a double-unrefering problem at the vortex sequencer
module. Under heavy load, the vortex sequencer unref many times the
same connection, while resequencing messages.
* [fix] making vortex-client tool to drop a frame received message
with timing information.
* [new] API patch  providing an extended API to SASL
authentication functions. Now they can receive an user defined
pointer. Thanks goes to Milton Yates. API added:
- VortexSaslAuthExternalFull (handler)
- VortexSaslAuthAnonymous (handler)
- VortexSaslAuthAnonymousFull (handler)
- VortexSaslAuthPlainFull (handler)
- VortexSaslAuthCramMd5Full (handler)
- VortexSaslAuthDigestMd5Full (handler)
* [new] Updated SASL documentation to explain the new API, updated
examples and reference to both functions. Updates
vortex-sasl-listener.c example to use both APIs.
* [fix] making SASL EXTERNAL mechanism to properly work. It was
defined all stuf but the validation handler wasn't
called. Implemented change using both validation handlers extended
* [fix] adding a function to perform a check prior launching SASL
authentication mechanism, avoiding passing required values for a
SASL mechanism as a NULL value.
* [new] updated the vortex-client tool to activate the SASL external
mechanism by asking for the authorization id to be sent. Updated
vortex-sasl-listener to include both validation handlers for SASL
* [fix] making vortex sequencer to not sequence new received packages
if there are pending ones to be sequenced for the same channel.
* [new] adding new API to allow configuring startup listener
information, at this moment host and port, to the listener API:
* [fix] making vortex xml rpc module to reuse previous definition to
* [fix] making __vortex_connection_new to close the socket and flag it
as -1 once an error is detected (it wasn't done in all cases).
* [new] adding a new API to get current reference count for a provided
connection. API added:
* [fix] making vortex_connection_set_on_close and
vortex_connection_set_on_close_full to support configuring several
handlers to be executed once the connection is closed. Adding new
* [fix] Added new API to allow vortex sequencer to get information
about current pending messages status:
* [fix] changing DTD file definition xml-rpc-listener-conf.dtd to
vortex-listener-conf.dtd and updating its content to be usable for
general purpose listeners.
* [fix] fixing some warnings at vortex-connection and vortex-listener
module due to type definitions.
* [fix] updating reg-test06.xdl file definition to properly represent
an example that uses an array definition that holds a struct def.
* [fix] fixing many bugs in xml-rpc-gen tool related to creating a
struct with string members.
* [fix] updated xml-rpc-gen tool to create conf.xml files using the
new format proposed by the library
* [new] adding two new options to enable controlling which is the
expected format to be processed: --idl-format and --xdl-format.
* [fix] re-writed vortex_reader_join_frames to use an new function
that reuse the memory allocated for the payload and other values,
for the first frame received to be join.
* [fix] rewrited vortex_connection_default_send and
vortex_connection_default_recieve to use the connection socket
directly avoiding calling to vortex_connection_get_socket.
* [fix] making vortex_log_is_enabled, vortex_log_enable,
vortex_color_log_is_enabled and vortex_color_log_enable to not
implement anything and return FALSE values if vortex log is not
* [fix] re-written vortex_frame_build_up_from_params_s to use some
memory segments instated of allocating them twice and reusing strlen
information provided by this functions. Saved one call to memcpy and
* [fix] re implemented vortex_frame_get_next to not use sscanf and use
an specific function to get BEEP frame header values:
* [fix] vortex reader removed unnecessary calls to
vortex_connection_get_channel and vortex_channel_get_connection at
the vortex reader loop.
* [fix] removing unnecessary calls to memset function at the vortex
frame module (vortex_frame_readline and
vortex_frame_readn). Replaced calls to g_strcasecmp* with
axl_stream_cmp. Replaced calls to g_strdup_printf with
* [fix] removing a wrong log line placed at the vortex_frame_factory
* [fix] making vortex profiles frame receive handler to check the
channel reference received inside the critical section created by
vortex_connection_ref/unref. Avoids a race condition between
checking connection status, and getting the channel reference.
* [fix] fixing a race condition inside vortex_connection_ref/unref and
vortex_connection_free which was causing to deallocate a mutex while
other threads could get into looking it during the deallocation.
* [fix] fixing vortex documentation (how a vortex client
works). Example wasn't compiling.
* [fix] moving reference counting increase inside the vortex profiles
and vortex channel frame receive invocation code to avoid race
conditions while performing unreference operations. This will allow
to perform the reference code at the vortex reader linear loop,
ensuring that the connection is not deallocated until the frame
receive deliver process is finished.
* [fix] adding/fixing support for XmlRpcArray, to be properly
marshalled and unmarshalled when it is used as parameter or as a
* [fix] making xml-rpc-gen tool to properly generate the destroy
function associated to an array.
* [fix] fixing support file used to close connection and vortex
session at the xml-rpc tests.
* [fix] added an new xml-rpc test file to check array support
(reg-test06.c and reg-test06.xdl).
* [fix] reorganized source code that was parsing xml-rpc structures
from IDL format into XDL format at the xml-rpc-gen tool.
* [fix] added support for array declaration at the IDL format
* [fix] committing IDL representation for the reg-test06 example.
* [fix] making channel instance to be created before called the start
handler allowing implementors to get the reference to the
channel. This allows to use the channel to store settings without
waiting to further handlers.
* [fix] fixed vortex_connection_is_ok: free on fail code was not
triggered in the proper case.
* [fix] removed unnecessary calls to vortex_connection_is_ok and null
checking from vortex_frame_get_next (already done by vortex
* [new] added support for the none value, which clearly represents the
undefined type while marshalling and unmarshalling NULL references
from the wire.
* [new] started xml-rpc manual for the new tool: xml-rpc-gen.
* [fix] adding missing test file (reg-test07.c)
* [fix] Adding instructions to Makefile.win to create a libvortex.lib
file (VS import library file).
* [fix] terminated NONE value support for the XML-RPC implementation
allowing to have null values inside an struct (or array).
* [fix] making vortex_channel to not flag the connection to be not
connected on a failure detected because it produces a dead-lock with
vortex_connection_close function (which already locked
connection->op_mutex). Even more, this call is not necessary.
* [fix] terminated support to struct type recursion inside IDL and XDL
format support (added reg-test07.idl and reg-test07.xdl). Added lot
of documentation to the xml-rpc-gen language supported.
* [fix] adding more documentation preparing Vortex Library release.
* [new] finished initial version for the xml-rpc manual including
instructions on how to use the xml-rpc-gen tool and the output
* [fix] disabling libexarg dependency by including its source code
inside the xml-rpc-gen tool (exarg.[ch]).
* [fix] updating configure.ac file to always compile the xml-rpc-gen
* [fix] updating documentation, web and source code to close vortex
Advanced Software Production Line is leading the Af-Arch project: a
complete framework to develop distributed application to manage
Af-Arch project relies on Vortex Library to exchange data between
its distributed nodes.
Advanced Software Production Line also provides GNU/Linux support
and consulting services to help organization to introduce GNU/Linux
inside its process.
Contact us, using English or Spanish, to get commercial support
and/or BEEP based development services.
You can reach us:
http://www.aspl.es - info at aspl.es
We hope Vortex Library help you. Enjoy Vortex Library!
Francis Brosnan Blázquez - francis at aspl.es
Advanced Software Production Line - http://www.aspl.es
7th Jul 2006, Madrid (Spain)
More information about the Vortex