![]() When a remote writer is discovery, a proxy_writer object representation that writer is created without yet having any knowledge of what the current sequence number for that writer is. If a local reader is matched with that proxy writer before a Heartbeat has been recevied and this sequence number information is known, all historical data will be made available to that reader, even if it is volatile. By treating the first Heartbeat specially, by moving the next sequence number to be delivered as fresh data forward to the next sequence number, retrieval of historical data is avoided. Transient-local readers have a separate ("out-of-sync") route to request it anyway. 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.