diff --git a/README.md b/README.md index 5ca9f3cba..4b7273a52 100644 --- a/README.md +++ b/README.md @@ -24,9 +24,16 @@ system input/output channel combination for each deployment. * Two API Layers: a high-level Publisher-Subscriber one focused on usability and a lower-level Writer-Reader one that provides finer access to the inner workings of the RTPS protocol. *eProsima Fast RTPS* has been adopted by multiple organizations in many sectors including these important cases: + * Robotics: ROS (Robotic Operating System) as their default middleware for ROS2. * EU R&D: FIWARE Incubated GE. +## Supported platforms + +* Linux [![Linux Build Status](http://jenkins.eprosima.com:8080/job/FastRTPS%20Nightly%20Master%20Security%20Linux/badge/icon)](http://jenkins.eprosima.com:8080/job/FastRTPS%20Nightly%20Master%20Security%20Linux) +* Windows [![Windows Build Status](http://jenkins.eprosima.com:8080/job/FastRTPS%20Nightly%20Master%20Security%20Windows/badge/icon)](http://jenkins.eprosima.com:8080/job/FastRTPS%20Nightly%20Master%20Security%20Windows) +* Mac [![Mac Build Status](http://jenkins.eprosima.com:8080/job/FastRTPS%20Nightly%20Master%20Security%20Mac/badge/icon)](http://jenkins.eprosima.com:8080/job/FastRTPS%20Nightly%20Master%20Security%20Mac) + ## Installation Guide You can get either a binary distribution of *eprosima Fast RTPS* or compile the library yourself from source. @@ -34,25 +41,28 @@ You can get either a binary distribution of *eprosima Fast RTPS* or compile the The latest, up to date binary release of *eprosima Fast RTPS* can be obtained from the company website. ### Installation from Source -To compile *eprosima Fast RTPS* from source, at least Cmake version 2.8.12 and Boost 1.61 are needed. +To compile *eprosima Fast RTPS* from source, at least Cmake version 2.8.12 is needed. Clone the project from GitHub: $ git clone https://github.com/eProsima/Fast-RTPS + $ cd Fast-RTPS + $ mkdir build + $ cd build If you are on Linux, execute: - $ cmake ../ -DEPROSIMA_BUILD=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install + $ cmake ../ -DTHIRDPARTY=ON $ make - $ make install + $ make install If you are on Windows, choose your version of Visual Studio: - > cmake ../ -G"Visual Studio 14 2015 Win64" -DEPROSIMA_BUILD=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=installationpath + > cmake ../ -G "Visual Studio 14 2015 Win64" -DTHIRDPARTY=ON > cmake --build . --target install If you want to compile the performance tests, you will need to add the argument `-DPERFORMANCE_TESTS=ON` when calling Cmake. -## Documentation +## Documentation You can access the documentation online, which is hosted on [Read the Docs](http://eprosima-fast-rtps.readthedocs.io). @@ -60,10 +70,8 @@ You can access the documentation online, which is hosted on [Read the Docs](http * [Installation manual](http://eprosima-fast-rtps.readthedocs.io/en/latest/requirements.html) * [User manual](http://eprosima-fast-rtps.readthedocs.io/en/latest/introduction.html) * [FastRTPSGen manual](http://eprosima-fast-rtps.readthedocs.io/en/latest/geninfo.html) -* [Release notes](http://eprosima-fast-rtps.readthedocs.io/notes.html) +* [Release notes](http://eprosima-fast-rtps.readthedocs.io/en/latest/notes.html) ## Getting Help If you need support you can reach us by mail at `support@eProsima.com` or by phone at `+34 91 804 34 48`. - - diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index a57ce19c4..6ff301d96 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -61,7 +61,7 @@ set(PRODUCT_CMAKELIST_CONTENT " GIT_REPOSITORY https://github.com/eProsima/Fast-RTPS.git GIT_TAG origin/${REPO_TAG} GIT_SHALLOW TRUE - CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF -DEPROSIMA_BUILD=ON -DSECURITY=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo \"-DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}/install\" + CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF -DTHIRDPARTY=ON -DSECURITY=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo \"-DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}/install\" UPDATE_COMMAND \"\" ) ") diff --git a/code/CodeTester.cpp b/code/CodeTester.cpp index 0597e5ba0..d40ef5e2e 100644 --- a/code/CodeTester.cpp +++ b/code/CodeTester.cpp @@ -273,6 +273,18 @@ IPLocator::setIPv4(initial_peer, 192, 168, 0, 1); participant_attr.rtps.builtin.initialPeersList.push_back(initial_peer); //!-- +//CONF-NON-BLOCKING-WRITE +//Create a descriptor for the new transport. +auto non_blocking_UDP_transport = std::make_shared(); +non_blocking_UDP_transport->non_blocking_send = false; + +//Disable the built-in Transport Layer. +participant_attr.rtps.useBuiltinTransports = false; + +//Link the Transport Layer to the Participant. +participant_attr.rtps.userTransports.push_back(non_blocking_UDP_transport); +//!-- + //CONF-QOS-FLOWCONTROLLER // Limit to 300kb per second. ThroughputControllerDescriptor slowPublisherThroughputController{300000, 1000}; diff --git a/code/XMLTester.xml b/code/XMLTester.xml index b45aff9b9..29243ac9f 100644 --- a/code/XMLTester.xml +++ b/code/XMLTester.xml @@ -389,6 +389,25 @@ <--> +CONF-NON-BLOCKING-WRITE<--> + + + non_blocking_transport + UDPv4 + false + + + + + + + non_blocking_transport + + false + + +<--> + CONF-QOS-FLOWCONTROLLER<--> @@ -576,6 +595,7 @@ 8192 8192 250 + false 16384 100 diff --git a/docs/advanced.rst b/docs/advanced.rst index ec664bf3b..f84dc0dc7 100644 --- a/docs/advanced.rst +++ b/docs/advanced.rst @@ -230,11 +230,13 @@ example. TCP doesn't support multicast scenarios, so you must plan carefully your network architecture. +.. _TLS: -Using TLS (Transport Layer Security) over TCP +TLS over TCP --------------------------------------------- -Fast-RTPS allows configuring a TCP Transport to use TLS by setting up **TCP Server** and **TCP Client** properly. +Fast-RTPS allows configuring a TCP Transport to use TLS (Transport Layer Security) +by setting up **TCP Server** and **TCP Client** properly. **TCP Server** @@ -411,6 +413,26 @@ Tips | :end-before: <--> | +----------------------------------------------+ +**Non-blocking write on sockets** + +For UDP transport, it is possible to configure whether to use non-blocking write calls on the sockets. + ++----------------------------------------------+ +| **C++** | ++----------------------------------------------+ +| .. literalinclude:: ../code/CodeTester.cpp | +| :language: c++ | +| :start-after: //CONF-NON-BLOCKING-WRITE | +| :end-before: //!-- | ++----------------------------------------------+ +| **XML** | ++----------------------------------------------+ +| .. literalinclude:: ../code/XMLTester.xml | +| :language: xml | +| :start-after: CONF-NON-BLOCKING-WRITE| +| :end-before: <--> | ++----------------------------------------------+ + **XML Configuration** The :ref:`xml-profiles` section contains the full information about how to setup *Fast RTPS* through an diff --git a/docs/notes.rst b/docs/notes.rst index e6680eb21..269d5cbd0 100644 --- a/docs/notes.rst +++ b/docs/notes.rst @@ -1,12 +1,51 @@ -Version 1.7.2 +Version 1.8.0 ============= +This release includes the following features: + +* Implementation of IDL 4.2 +* Implementation of :ref:`deadline-qos` QoS +* Implementation of :ref:`lifespan-qos` QoS +* Implementation of :ref:`disable-positive-acks-qos` QoS +* Secure sockets on TCP transport (:ref:`TLS`) + +It also adds the following improvements and bug fixes: + +* Real-time improvements: non-blocking write calls for best-effort writers, addition of fixed size strings, + fixed size bitmaps, resource limited vectors, etc +* Duration parameters now use nanoseconds +* Configuration of participant mutation tries (see :ref:`participantconfiguration`) +* Automatic calculation of the port when a value of 0 is received on the endpoint custom locators +* Non-local addresses are now filtered from whitelists +* Optimization of check for acked status for stateful writers +* Linked libs are now not exposed when the target is a shared lib +* Limitation on the domain ID has been added +* UDP non-blocking send is now optional and configurable via XML +* Fix for non-deterministic tests +* Fix for ReaderProxy history being reloaded incorrectly in some cases +* Fix for RTPS domain hostid being potentially not unique +* Fix for participants with different lease expiration times failing to reconnect + +**Known issues** + +* When using TPC transport, sometimes callbacks are not invoked when removing a participant due to a bug in ASIO. + +**Note:** If you are upgrading from a version older than 1.7.0, it is **required** to regenerate generated source +from IDL files using *fastrtpsgen* + +Previous versions +----------------- + +Version 1.7.2 +^^^^^^^^^^^^^ + This release fixes an important bug: * Allocation limits on subscribers with a KEEP_LAST QoS was taken from resource limits configuration and didn't take history depth into account. It also has the following improvements: + * Vendor FindThreads.cmake from CMake 3.14 release candidate to help with sanitizers. * Fixed format of gradle file. @@ -15,9 +54,6 @@ Some other minor bugs and performance improvements. **Note:** If you are upgrading from a version older than 1.7.0, it is **required** to regenerate generated source from IDL files using *fastrtpsgen* -Previous versions ------------------ - Version 1.7.1 ^^^^^^^^^^^^^ diff --git a/docs/spelling_wordlist.txt b/docs/spelling_wordlist.txt index 619983656..de1ca15a9 100644 --- a/docs/spelling_wordlist.txt +++ b/docs/spelling_wordlist.txt @@ -1,8 +1,10 @@ acceptor acceptors ack +acked acks AES +ASIO auth benchmarking bitset @@ -31,9 +33,11 @@ Github GMAC gradle gtest +hostid IDL interoperability IPv +libs middleware metatraffic modularity @@ -51,6 +55,7 @@ retransmission rtps scalability sqlite +stateful subfolder submessages typeobject @@ -60,6 +65,7 @@ unicast unidimensional XTypes whitelist +whitelists WString TCP helloworld diff --git a/docs/xmlprofiles.rst b/docs/xmlprofiles.rst index 8f64e9066..c1e19766e 100644 --- a/docs/xmlprofiles.rst +++ b/docs/xmlprofiles.rst @@ -101,6 +101,9 @@ The XML label ```` can hold any number of ```` | *Time To Live*, **only** | ``uint8`` | 1 | | | for UDP transports . | | | +-------------------------------+-----------------------------------+---------------------------------+----------------+ +| ```` | Whether to set the non-blocking | ``bool`` | false | +| | send mode on the socket | | | ++-------------------------------+-----------------------------------+---------------------------------+----------------+ | ```` | The maximum size in bytes | ``uint32`` | 65500 | | | of the transport's message | | | | | buffer. | | |