Version v0.4.0

This release includes the following features:

  • New YAML Validator, a simple tool to assert the correctness of DDS Router configuration files.

  • New Version Argument to show the current version of DDS Router.

This release includes the following improvementes:

  • New FastPayloalPool class that will allow unblocking access to shared payloads stored by FastDDS and DDS Router. This slightly improves the performance of the router.

  • New ThreadPool class for handling parallel processing. Limit the number of threads spawned by the DDS Router, improving the performance of the application. The user can set-up this parameter on the YAML configuration Number of Threads.

This release includes the following major changes:

  • New auxiliary package ddsrouter_cmake to implement general CMake functions and tools.

  • The internal package ddsrouter_event is joint within the internal package ddsrouter_utils.

This release includes the following minor changes:

  • Refactor all enum to enum class.

This release includes the following Continuous-Integration features:

  • New CI workflow to build dependencies nightly. This allows to run the CI faster, as the build is only done for the ddsrouter packages and not the whole fastdds.

  • Add ubuntu 22.04 to platforms in CI.

  • Add windows 19 to platforms in CI.

This release fixes the following minor bugs:

  • Fix race condition occurred when handling signals (due to concurrent access to SignalManager singleton).

  • Bug in TLS Configuration initialization when setting server configuration files.

  • Set FastDDS DomainParticipants and Readers listeners after creation to avoid race conditions in entities creation.

Previous Versions

Version v0.3.0

This release includes the following major changes:

  • New DDS Router library that provides the DDS Router features through a C++ API.

  • Division of DDS Router application into several packages.

    • ddsrouter_event: C++ library which implements System Operating (SO)-dependent signal handlers.

    • ddsrouter_utils: C++ library which implements various utility functions.

    • ddsrouter_core: C++ library which implements the DDS Router operation and exports the DDS Router C++ API.

    • ddsrouter_yaml: C++ library to parse the DDS Router yaml configuration files.

    • ddsrouter_tool: DDS Router end-user application.

  • New dynamic topic discovery feature to automatically discover DDS Topics in a DDS network.

  • Allow using wildcard characters to define topics in allowlist and blocklist.

  • Build internal topic tracks via the builtin-topics configuration.

This release includes the following Routing features:

  • Apply DDS Topic filtering rules using the allowlist and blocklist lists.

This release includes the following User Interface features:

  • Upgrade the yaml configuration file to version 2.0 which breaks compatibility with version 1.0.

  • Support for both version 1.0 and version 2.0 of the yaml configuration file, maintaining version 1.0 by default.

  • Improve reporting of errors resulting from parsing a malformed yaml configuration file.

This release includes the following Continuous-Integration features:

  • Add tests for the yaml parsing library (ddsrouter_yaml).

  • Specific testing GitHub actions for each DDS Router package for both Windows and Linux platforms.

This release fixes the following major bugs:

  • Fix deadlock between Track and Fast DDS Reader mutex.

  • Support any size for in and out messages.

This release fixes the following minor bugs:

  • Fix parsing of reload-time executable argument.

  • Handle signals in dedicated threads to prevent hangs when terminating execution.

  • Fix rare deadlock in EventHandler when destroying and callback called.

This release includes the following Documentation features:

  • DDS Router execution from a provided Docker image.

  • Update all examples of yaml configuration files to be consistent with the new yaml configuration version.

  • High-level repository structure description and developer contribution guidelines.

  • Improved and extended Topic Filtering section according to the new dynamic topic discovery functionality.

Version v0.2.0

This release includes the following Configuration features:

  • Support TLS over TCP configuration and communication.

  • Support IPv6 communication via UDP, TCP and TLS over TCP.

  • Support DNS by given Domain Name in configuration instead of an IP address.

  • Support keyed topics.

This release includes the following Routing features:

  • Zero-Copy data transmission between internal Participants.

This release includes the following User Interface features:

  • Shutdown the DDS Router application gracefully sending SIGTERM (kill) or SIGINT (^C) signals.

This release includes the following Continuous-Integration features:

  • Add communication tests for UDP, TCP and TLS over TCP WAN cases.

  • Extend tool test with more complex configurations.

  • Remove Flaky tests from CI required passing tests.

  • Implement a new class to check that no warning or error logs are produced during test executions.

  • Add gMock to test libraries.

This release fixes the following major bugs:

  • Fix GUID creation when explicit guid is provided.

  • Show error when participant ids are duplicated.

This release fixes the following minor bugs:

  • Change YAML example configurations to YAML format (instead of JSON) fixing an issue when blank lines were missing at the end of the file.

  • Normalize the error and process exit when failure.

  • Fix documentation typos.

Version v0.1.0

This is the first release of eProsima DDS Router.

This release includes several features regarding the routing of DDS data, the DDS Router configuration, the user interaction with the DDS Router, and the different DDS configurations that the application is able to reproduce.

This release includes the following User Interface features:

  • Application executable.

  • Application executable arguments.

  • Signal handler to close the application.

  • FileWatcher thread to watch and reload the configuration file.

  • Periodic timer to force reload configuration.

  • Application run-time user logs.

  • Application run-time debug logs.

  • Error handling:

    • Error log and exit program when reading configuration fails.

    • Error log and exit program when initializing Participants fails.

    • Error log and continuing execution when execution error occurs.

This release includes the following Configuration features:

  • Allow to execute the application with a YAML configuration file.

  • Support for initial topics in allowlist.

  • Support for block topic filters.

  • Different Participant configurations:

    • Domain Id.

    • Discovery Server GuidPrefix.

    • Listening addresses.

    • Connection addresses.

This release includes the following Routing features:

  • Support for routing Topics specified in allowlist regarding Topic name and Topic Type name.

  • Support for connecting to new Topics in run-time (by reloading configuration).

  • Support for disabling a Topic in run-time.

  • Support for enabling a Topic that has been disabled in run-time.

  • Route messages of each Participant to all the other Participants.

  • Agnostic to topic data types.

This release includes the following DDS features:

  • Allow UDP, TCP and SHM transport communication.

  • Allow dynamic discovery of new entities.

  • Using eProsima Fast DDS RTPS layer for discovery, publication and subscription.

This release includes the following Participant features:

  • Echo Participant.

  • Simple Participant, able to connect to a Simple Discovery UDP DDS network.

  • Local Discovery Server Participant, able to connect to a local Discovery Server as Client or Server.

  • WAN Participant, able to connect to a WAN Discovery Server network as Client or Server.

This release includes the following Examples:

  • Echo Example, to monitor a local simple network.

  • Domain Change Example, to connect two different domains.

  • ROS 2 Discovery Server Example, to connect a regular DDS network with a Discovery Server network using ROS 2 configuration.

  • WAN Example, to connect two DDS networks in different LANs.

This release includes the following Documentation features:

  • This same documentation.