{"id":27301517,"url":"https://github.com/eprosima/fastdds-sh","last_synced_at":"2026-03-07T21:32:32.996Z","repository":{"id":48043307,"uuid":"191137086","full_name":"eProsima/FastDDS-SH","owner":"eProsima","description":"eProsima's Integration Service System Handle for Fast DDS.","archived":false,"fork":false,"pushed_at":"2023-04-28T10:31:56.000Z","size":4332,"stargazers_count":15,"open_issues_count":1,"forks_count":9,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-02-13T09:04:17.732Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eProsima.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-06-10T09:25:15.000Z","updated_at":"2026-01-05T16:11:04.000Z","dependencies_parsed_at":"2025-04-12T01:46:42.355Z","dependency_job_id":"24c7fee8-23f6-47d9-a4b4-b48227d1264c","html_url":"https://github.com/eProsima/FastDDS-SH","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/eProsima/FastDDS-SH","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eProsima%2FFastDDS-SH","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eProsima%2FFastDDS-SH/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eProsima%2FFastDDS-SH/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eProsima%2FFastDDS-SH/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eProsima","download_url":"https://codeload.github.com/eProsima/FastDDS-SH/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eProsima%2FFastDDS-SH/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30231636,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T19:01:10.287Z","status":"ssl_error","status_checked_at":"2026-03-07T18:59:58.103Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-12T01:46:37.461Z","updated_at":"2026-03-07T21:32:32.967Z","avatar_url":"https://github.com/eProsima.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://integration-service.docs.eprosima.com/\"\u003e\u003cimg src=\"https://github.com/eProsima/Integration-Service/blob/main/docs/images/logo.png?raw=true\" hspace=\"8\" vspace=\"2\" height=\"100\" \u003e\u003c/a\u003e\n\n# Fast DDS System Handle\n\n[![FastDDS SH CI Status](https://github.com/eProsima/FastDDS-SH/actions/workflows/ci.yml/badge.svg)](https://github.com/eProsima/FastDDS-SH/actions)\n\u0026nbsp;\u0026nbsp;[![Have an issue?](https://img.shields.io/badge/-Open%20an%20issue-orange)](https://github.com/eProsima/Integration-Service/issues/new)\n\n## Introduction\n\n### What is a System Handle?\n\nA [System Handle](https://integration-service.docs.eprosima.com/en/latest/user_manual/systemhandle/sh.html) is a plugin that allows a certain middleware\nor communication protocol to speak the same language used by the [eProsima Integration Service](https://github.com/eProsima/Integration-Service),\nthat is, *Extensible and Dynamic Topic Types for DDS* (**xTypes**);\nspecifically, *Integration Service* bases its intercommunication abilities on eProsima's open source\nimplementation for the *xTypes* protocol, that is, [eProsima xTypes](https://github.com/eProsima/xtypes).\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://integration-service.docs.eprosima.com/en/latest/user_manual/systemhandle/sh.html\"\u003e\u003cimg src=\"docs/images/system-handle-architecture.png\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n### The Fast DDS SystemHandle\n\n\u003ca href=\"https://fast-dds.docs.eprosima.com/\"\u003e\u003cimg src=\"docs/images/fastdds_logo.png\" align=\"left\" hspace=\"8\" vspace=\"2\" width=\"120\"\u003e\u003c/a\u003e\n\nThis repository contains the source code of the *Integration Service* **System Handle**\nfor eProsima's open source implementation of the [DDS](https://www.dds-foundation.org/omg-dds-standard/) protocol,\nthat is, [Fast DDS](https://github.com/eProsima/Fast-DDS).\n\nThis *System Handle* can be used for three main purposes:\n\n\n1. Connection between a *DDS* application and an application running over a different middleware implementation.\n  This is the classic use-case approach for *Integration Service*.\n\n1. Connecting two *DDS* applications running under different Domain IDs.\n\n1. Creating a *TCP tunnel*, by running an *Integration Service* instance on each of the\n  machines you want to establish a communication between.\n  \n## Dependencies\n\nThis section provides a list of the dependencies needed in order to compile *FastDDS System Handle*. \n\n* [FastDDS](https://github.com/eProsima/Fast-DDS#installation-guide): eProsima C++ implementation for *DDS*.\n\n## Configuration\n\n*Integration Service* is configured by means of a YAML configuration file, which specifies\nthe middlewares, topics and/or services involved in the intercommunication process, as well as\ntheir topic/service types and the data exchange flow. This configuration file is loaded at\nruntime, so there is no need to recompile any package before switching to a whole new\nintercommunication architecture.\n\nTo get a more precise idea on how these YAML files have to be filled and which fields they require\nin order to succesfully configure and launch an *Integration Service* project, please refer to the\n[dedicated configuration section](https://integration-service.docs.eprosima.com/en/latest/user_manual/yaml_config.html) of the official documentation.\n\nRegarding the *Fast DDS System Handle*, there are several specific parameters which can be configured\nfor the DDS middleware. All of these parameters are optional, and fall as suboptions of the main\nfive sections described in the *Configuration* chapter of the *Integration Service* repository:\n\n* `systems`: The system `type` must be `fastdds`. In addition to the `type` and `types-from` fields,\n  the *Fast DDS System Handle* accepts the following specific configuration fields:\n\n  ```yaml\n  systems:\n    dds:\n      type: fastdds\n      participant:\n        domain_id: 3\n        file_path: \u003cpath_to_xml_profiles_file\u003e.xml\n        profile_name: fastdds-sh-participant-profile\n  ```\n\n  * `participant`: Allows to add specific configuration for the [Fast DDS DomainParticipant](https://fast-dds.docs.eprosima.com/en/latest/fastdds/dds_layer/domain/domainParticipant/domainParticipant.html):\n\n    * `domain_id`: Provides an easy way to change the *Domain ID* of the DDS entities created\n      by the *Fast DDS System Handle*.\n\n    * `file_path`: Path to an XML file, containing a configuration profile for the System Handle\n      participant. More information about Fast DDS XML profiles and how to fully customize the\n      properties of DDS entities through them is available [here](https://fast-dds.docs.eprosima.com/en/latest/fastdds/xml_configuration/xml_configuration.html).\n\n    * `profile_name`: Within the provided XML file, the name of the XML profile associated to the\n      *Integration Service Fast DDS System Handle* participant.\n\n## Examples\n\nThere are several *Integration Service* examples using the *Fast DDS System Handle* available\nin the project's [main source code repository](https://github.com/eProsima/Integration-Service/tree/main/examples).\n\nSome of these examples, where the *Fast DDS System Handle* plays a different role in each of them, are introduced here.\n\n\u003ca href=\"https://integration-service.docs.eprosima.com/en/latest/examples/different_protocols/pubsub/dds-ros2.html\"\u003e\u003cimg align=\"left\" width=\"15\" height=\"38\" src=\"https://via.placeholder.com/15/40c15d/000000?text=+\" alt=\"Green icon\"\u003e\u003c/a\u003e\n\n### DDS - ROS 2 bridge  (publisher - subscriber)\n\nIn this example, *Integration Service* uses both this *Fast DDS System Handle* and the *ROS 2 System Handle*\nto transmit data coming from a Fast DDS publisher into the ROS 2 data space, so that it can be\nconsumed by a ROS 2 subscriber on the same topic, and viceversa.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://integration-service.docs.eprosima.com/en/latest/examples/different_protocols/pubsub/dds-ros2.html\"\u003e\u003cimg src=\"docs/images/dds_ros2_pubsub_example.png\" width=\"500\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThe configuration file used by *Integration Service* for this example can be found\n[here](https://github.com/eProsima/Integration-Service/blob/main/examples/basic/fastdds_ros2__helloworld.yaml).\n\nFor a detailed step by step guide on how to build and test this example, please refer to the\n[dedicated section](https://integration-service.docs.eprosima.com/en/latest/examples/different_protocols/pubsub/dds-ros2.html) in the official documentation.\n\n\u003ca href=\"https://integration-service.docs.eprosima.com/en/latest/examples/different_protocols/services/dds-server.html\"\u003e\u003cimg align=\"left\" width=\"15\" height=\"38\" src=\"https://via.placeholder.com/15/40c15d/000000?text=+\" alt=\"Green icon\"\u003e\u003c/a\u003e\n\n### DDS service server\n\nIn this example, the *Fast DDS System Handle* tackles the task of bridging a DDS server with one or more client applications,\nplaying the role of a service server capable of processing incoming requests from several middlewares (*ROS1*, *ROS2*,\n*WebSocket*) and producing an appropriate answer for them.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://integration-service.docs.eprosima.com/en/latest/examples/different_protocols/services/dds-server.html\"\u003e\u003cimg src=\"docs/images/dds_services_example.png\" width=\"550\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThe configuration file used by *Integration Service* for this example can be found\n[here](https://github.com/eProsima/Integration-Service/blob/main/examples/basic/fastdds_server__addtwoints.yaml).\n\nFor a detailed step by step guide on how to build and test this example, please refer to the\n[dedicated section](https://integration-service.docs.eprosima.com/en/latest/examples/different_protocols/services/dds-server.html) in the official documentation.\n\n\u003ca href=\"https://integration-service.docs.eprosima.com/en/latest/examples/same_protocol/dds_change_domain.html\"\u003e\u003cimg align=\"left\" width=\"15\" height=\"38\" src=\"https://via.placeholder.com/15/40c15d/000000?text=+\" alt=\"Green icon\"\u003e\u003c/a\u003e\n\n### DDS Domain ID change\n\nIn this example, *Integration Service* uses the *Fast DDS System Handle*\nto forward the messages sent from a DDS publisher hosted on a participant with domain ID **5** to\na subscriber created under domain ID **3**.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://integration-service.docs.eprosima.com/en/latest/examples/same_protocol/dds_change_domain.html\"\u003e\u003cimg src=\"docs/images/dds_domain_id_change.png\" width=\"600\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThe configuration file for this example can be found\n[here](https://github.com/eProsima/Integration-Service/blob/main/examples/basic/fastdds__domain_id_change.yaml).\n\nFor a detailed step by step guide on how to build and test this example, please refer to the\n[dedicated section](https://integration-service.docs.eprosima.com/en/latest/examples/same_protocol/dds_change_domain.html) in the official documentation.\n\n\u003ca href=\"https://integration-service.docs.eprosima.com/en/latest/examples/wan_communication/wan_tcp_dds.html\"\u003e\u003cimg align=\"left\" width=\"15\" height=\"38\" src=\"https://via.placeholder.com/15/40c15d/000000?text=+\" alt=\"Green icon\"\u003e\u003c/a\u003e\n\n### WAN-TCP tunneling over DDS\n\nThe last example depicts how *Integration Service*, along with the *Fast DDS System Handle*, could be useful\nto forward the messages coming from a ROS 2 node running on a certain machine to another ROS 2\nnode running on another machine, which are connected to two separate WAN networks, thanks to the\nWAN capabilities of *Fast DDS*.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://integration-service.docs.eprosima.com/en/latest/examples/wan_communication/wan_tcp_dds.html\"\u003e\u003cimg src=\"docs/images/tcp_wan_dds.png\" width=\"600\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThe configuration files for this example can be found\n[here](https://github.com/eProsima/Integration-Service/tree/main/examples/wan_tunneling/ros2__wan_helloworld).\n\nFor a detailed step by step guide on how to build and test this example, please refer to the\n[dedicated section](https://integration-service.docs.eprosima.com/en/latest/examples/wan_communication/wan_tcp_dds.html) in the official documentation.\n\n## Compilation flags\n\nBesides the [global compilation flags](https://integration-service.docs.eprosima.com/en/latest/installation_manual/installation.html#global-compilation-flags) available for the\nwhole *Integration Service* product suite, there are some specific flags which apply only to the\n*Fast DDS System Handle*; they are listed below:\n\n* `BUILD_FASTDDS_TESTS`: Allows to specifically compile the *Fast DDS System Handle* unitary and\n  integration tests; this is useful to avoid compiling each *System Handle's* test suite present\n  in the `colcon` workspace, which is what would happen if using the `BUILD_TESTS` flag; and thus,\n  minimizing the building time; to use it,after making sure that the *Fast DDS System Handle*\n  is present in the `colcon` workspace, the following command must be executed:\n  ```bash\n  ~/is_ws$ colcon build --cmake-args -DBUILD_FASTDDS_TESTS=ON\n  ```\n\n## Documentation\n\nThe official documentation for the *Fast DDS System Handle* is included within the official *Integration Service*\ndocumentation, hosted by [Read the Docs](https://integration-service.docs.eprosima.com/), and comprises the following sections:\n\n* [Installation Manual](https://integration-service.docs.eprosima.com/en/latest/installation_manual/installation_manual.html)\n* [User Manual](https://integration-service.docs.eprosima.com/en/latest/user_manual/systemhandle/fastdds_sh.html)\n* [API Reference](https://integration-service.docs.eprosima.com/en/latest/api_reference/fastdds_sh/api_is_fastdds_sh.html)\n\n## License\n\nThis repository is open-sourced under the *Apache-2.0* license. See the [LICENSE](LICENSE) file for more details.\n\n## Getting help\n\nIf you need support you can reach us by mail at `support@eProsima.com` or by phone at `+34 91 804 34 48`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feprosima%2Ffastdds-sh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feprosima%2Ffastdds-sh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feprosima%2Ffastdds-sh/lists"}