![]() Move details of built-in topics out of the DDSI core (so the only hooks remain). For this, rtps_term had to be split, so now it is "stop" followed by "fini". Add a notion of local writers that are not bound to a participant ("local orphans"), so that the local built-in topic writers can be created during initialization. This eliminates the "builtin" participant. This uncovered in inconsistency in the unit tests: on the one hand, a newly created participant is expected to have no child entities; on the other hand, the built-in topics were expected to be returned by find_topic ... This inconsistency has been resolved by creating them lazily and accepting that find_topic can't return them until they have been created. Special code was in place in dds_create_reader anyway, so it is not expected to have any real consequence for applications. Use a special WHC implementation that regenerates the data on the fly using the internal discovery tables of DDSI, so that the samples are only stored by readers. This eliminates the memory overhead of that existed previously when the WHC of the writers stored the data. No longer return topic name and type name in the built-in topics, they have been extracted already and are not accessible through the normal interface but do cause problems when comparing QoS. Signed-off-by: Erik Boasson <eb@ilities.com> |
||
---|---|---|
docs/dev | ||
notes | ||
src | ||
vdds-xcode/vdds-xcode.xcodeproj | ||
.gitignore | ||
.gitmodules | ||
.travis.yml | ||
appveyor.yml | ||
conanfile.txt | ||
CONTRIBUTING.md | ||
LICENSE | ||
NOTICE.md | ||
README.md |
Eclipse Cyclone DDS
Eclipse Cyclone DDS is by far the most performant and robust DDS implementation available on the market.
Beside, Cyclone DDS is developed completely in the open and is undergoing the acceptance process to become part of Eclipse IoT (see eclipse-cyclone-dds).
Getting Started
Building Cyclone DDS
In order to build cyclone DDS you need to have installed on your host cmake v3.6.0 or higher, the Java 8 JDK or simply the Java 8 RE, and Apache Maven 3.5.x or higher.
Assuming that git is also available on your machine then, simply do:
$ git clone https://github.com/eclipse/cyclonedds.git
$ cd cyclonedds
$ mkdir build
$ cd build
$ cmake ../src
$ make
$ make install
At this point you are ready to use cyclonedds for your next DDS project!
Examples
Now that you have built and installed cyclonecdds it is time to experiment with some examples.
Building and Running the Roundtrip Example
The first example we will show you how to build and run, measures cyclonedds latency and will allow you to see with your eyes how fast it is!
Do as follows:
$ cd cyclonedds/src/examples/roundtrip
$ mkdir build
$ cd build
$ cmake ..
$ make
Now that you've build the roundtrip example it is time to run it.
On one terminal start the applications that will be responding to cyclonedds pings. $ ./RoundtripPong
On another terminal, start the application that will be sending the ping.
$ ./RoundtripPing 0 0 0
# payloadSize: 0 | numSamples: 0 | timeOut: 0
# Waiting for startup jitter to stabilise
# Warm up complete.
# Round trip measurements (in us)
# Round trip time [us] Write-access time [us] Read-access time [us]
# Seconds Count median min 99% max Count median min Count median min
1 28065 17 16 23 87 28065 8 6 28065 1 0
2 28115 17 16 23 46 28115 8 6 28115 1 0
3 28381 17 16 22 46 28381 8 6 28381 1 0
4 27928 17 16 24 127 27928 8 6 27928 1 0
5 28427 17 16 20 47 28427 8 6 28427 1 0
6 27685 17 16 26 51 27685 8 6 27685 1 0
7 28391 17 16 23 47 28391 8 6 28391 1 0
8 27938 17 16 24 63 27938 8 6 27938 1 0
9 28242 17 16 24 132 28242 8 6 28242 1 0
10 28075 17 16 23 46 28075 8 6 28075 1 0
The number above were measure on Mac running a 4,2 GHz Intel Core i7 on December 12th 2018. From these number you can see how the roundtrip is incredibly stable and the minimal latency is now down to 17 micro-seconds (used to be 25 micro-seconds) on this HW.
Documentation
The Cyclone DDS documentation is available here.