[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  ##

Release note

  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:

    - http://vortex.aspl.es
      [Vortex Library homepage]
    - http://www.sf.net/projects/vortexlibrary
      [Sources and Win32 binaries]

    - http://fact.aspl.es
      [Af-Arch homepage where Vortex Library is being developed]

    - http://www.beepcore.org
      [BEEP Core community web site]

    - http://xml.aspl.es
      [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.

Thanks to..

  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
  xml-rpc-gen tool.

* [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

  - vortex_xml_rpc_array_new
  - vortex_xml_rpc_array_free
  - vortex_xml_rpc_array_count
  - vortex_xml_rpc_array_max_count
  - vortex_xml_rpc_array_get
  - vortex_xml_rpc_array_set
  - vortex_xml_rpc_array_add

* [new] Adding two new unmarshaller functions to allow building C
  stubs that supports XmlRpcStruct and XmlRpcArray as incoming
  parameters and as results:

  - XmlRpcArrayUnMarshaller
  - XmlRpcStructUnMarshaller

* [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:

   - vortex_thread_pool_set_num
   - vortex_thread_pool_set_exclusive_pool

* [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:
    - vortex_xml_rpc_method_value_nullify
    - vortex_xml_rpc_method_call_get_param_value_as_struct
    - vortex_xml_rpc_method_call_get_param_value_as_array
    - vortex_xml_rpc_types_marshall_struct

* [fix] re-written method value marshalling to support recurvise
  definitions. API added:
    - vortex_xml_rpc_marshall_method_value

* [fix] added more API to manage XmlRpcStruct and its native
  representation for the up coming xml-rpc-gen compiler. API added:
    - vortex_xml_rpc_struct_get_member_count 
    - vortex_xml_rpc_struct_check_member_names
    - vortex_xml_rpc_struct_check_member_types
* [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:

    - reg-test01
    - reg-test02
    - reg-test03
    - reg-test04
    - reg-test05

* [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
  tgz bundle.

* [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:
    - vortex_sasl_auth_method_used

* [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
  using vortex_connection_set_on_connection_accepted.

* [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 [318] 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)

  - vortex_sasl_set_external_validation_full
  - vortex_sasl_set_anonymous_validation_full
  - vortex_sasl_set_plain_validation_full
  - vortex_sasl_set_cram_md5_validation_full
  - vortex_sasl_set_digest_md5_validation_full
  - vortex_sasl_accept_negociation_full

* [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
  and previous.

* [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
  EXTERNAL profile.

* [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:

   - vortex_listener_parse_conf_and_start

* [fix] making vortex xml rpc module to reuse previous definition to
  implement vortex_xml_rpc_listener_parse_conf_and_start_listeners.

* [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:
  - vortex_connection_ref_count

* [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

  - vortex_connection_remove_on_close_full

* [fix] Added new API to allow vortex sequencer to get information
  about current pending messages status:

  - vortex_channel_is_empty_pending_message
* [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
  release 0.9.0.
About Us

  Advanced Software Production Line is leading the Af-Arch project: a
  complete framework to develop distributed application to manage
  enterprise process.

  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 mailing list