Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Expose seqnum via sampleinfo #1484

Open
wants to merge 213 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
213 commits
Select commit Hold shift + click to select a range
32db3dc
fuzz: building fuzz_handshake with libprotobuf-mutator works
robertfemmer Mar 12, 2024
c2f1592
expose-seqnum-via-sampleinfo
TheFixer Dec 4, 2019
8507ad3
Use seqno_t as type for sequence numbers (which is defined as uint64_t)
TheFixer Nov 18, 2022
571f080
Removed seq_no from dds_sampleinfo_t and add sequence_number to ddsi_…
TheFixer Dec 21, 2022
467b500
Add .get_sequencenumber function to ddsi_serdata_ops interface, so th…
TheFixer Jan 23, 2023
80854d1
First attempt to add writer guid to serdata interface
TheFixer May 1, 2023
a14732e
Implement function dds_reader_store_historical_data() to deliver serd…
TheFixer Jun 1, 2023
1bfa3b8
Use lifespan set to DDSRT_MTIME_NEVER when adding historical serdata …
TheFixer Jul 7, 2023
1b0dbac
create cmake infrastructure for durability
TheFixer Sep 14, 2023
1839152
Add durability as a trace category and initialize durability when the…
TheFixer Oct 10, 2023
1e9ff01
Do send a nack if a gap for durable data i detected
TheFixer Oct 10, 2023
91d4174
Quorum implementation based on subscription matched for durable writers
TheFixer Oct 13, 2023
05be93c
quorum checking for durable writers
TheFixer Oct 16, 2023
76fde62
Use similar idl files for durable client as for durable server
TheFixer Oct 17, 2023
1cae5ab
Initialize quorum_reached variable correctly in case quorum threshold…
TheFixer Oct 20, 2023
8f31f59
Use dds_get_matched_subscriptions() in dc_check_quorum_reched() to de…
TheFixer Oct 20, 2023
aa2ab4c
fix sanitizer error due to double free
mvandenhoek Oct 24, 2023
9aa2603
Publish dc_request when a durable reader is created
TheFixer Nov 3, 2023
4a97e03
Make dc_requests transient-local and autodispose, and add the ability…
TheFixer Nov 7, 2023
341c95f
Add additional check on the length of topic names in dc_requests
TheFixer Nov 13, 2023
e792bf6
Rebase the expose-seqnum-via-sampleinfo on current master
TheFixer Nov 15, 2023
b829bc6
Implement receiving dc_response from a DS
TheFixer Nov 17, 2023
c057bfd
expose symbols when building with durable support, fix goto labels
mvandenhoek Nov 21, 2023
7fef779
Refactor administration of requests; requests are now organised per s…
TheFixer Dec 6, 2023
fa6d5bf
Add ability to receive responses from a ds
TheFixer Dec 11, 2023
f525e95
Deliver data beads per data set to a dc, and allow delivery of data b…
TheFixer Dec 14, 2023
9411e0c
Data delivery to local readers
TheFixer Dec 20, 2023
760656d
Encode the writer's autodispose setting in response beads
TheFixer Dec 30, 2023
d74ff57
Inject historical data as unregistered when the proxy writer is not (…
TheFixer Jan 2, 2024
2ff72c9
Fix crash when printing octet sequence, and improve printing of trunc…
TheFixer Jan 5, 2024
195a7d4
Add //CycloneDDS/Domain/Durability/Quorum configuration option to set…
TheFixer Feb 7, 2024
6fc6bc4
Add type_id to dc_request and dc_response
TheFixer Mar 18, 2024
174ee2e
Fix merge issues when rebasing on CycloneDDS master
TheFixer Mar 22, 2024
4e46317
Exclude test cases for transient and persistent profiles when there i…
TheFixer Mar 22, 2024
53a204f
Allow multipathing between PSMX and DDSI
eboasson Jan 29, 2024
648a898
remove deprecate warnings when using openssl v3 (#1826)
MarcelJordense Mar 25, 2024
6f5ce86
Drop support for OpenSSL pre-1.1.1
eboasson Mar 22, 2024
840c1ff
Add build-time option for TCP+TLS support
eboasson Mar 26, 2024
54ec204
Update CI platform selection
eboasson Mar 20, 2024
d22e750
Fix false pos on null deref in serdata_from_ser
eboasson Jul 18, 2023
91b446c
Minor changes for gcc analyzer
eboasson Jul 18, 2023
32f3139
GCC analyzer dislikes non-null arg as loop var
eboasson Mar 20, 2024
0f07fe7
Suppress some warnings in mcpp
eboasson Mar 21, 2024
1c073c1
Allow some warnings for gcc 13.0 and 13.1
eboasson Mar 21, 2024
dfdbaf1
Add -rpath to macOS idlc/xtests build flags
eboasson Mar 21, 2024
8a16a76
Add non-null, &c attributes to xmsg.h
eboasson Aug 10, 2023
69a7e8b
Delete UnicastResponseToSPDPMessages option
eboasson Oct 31, 2023
3991b45
Dump malformed packets to trace, optionally to log
eboasson Jan 29, 2024
ff00abe
Add support for optional members in dynsub
eboasson Feb 22, 2024
0118042
Fix race condition in security FSM unit test
eboasson Mar 26, 2024
fa9f1a7
Correctly initialize defaulted external sequence
eboasson Mar 28, 2024
085bd87
Test initializing defaulted external sequence
eboasson Mar 28, 2024
0bf9627
Always make idlc_generate available in install
eboasson Mar 28, 2024
8959074
basic harness working
robertfemmer Mar 29, 2024
d45d6eb
Don't set a quorum on writers created by a DS
TheFixer Mar 29, 2024
6541a50
Don't run security tests when durability is enabled (they don't go we…
TheFixer Mar 29, 2024
3937eba
Add reader guid to dc_request
TheFixer Apr 2, 2024
8c8727e
fuzz_handshake: handshake both ways working
robertfemmer Apr 3, 2024
4765392
qos_provider support (#1955)
Splinter1984 Apr 3, 2024
cb46d84
fuzz_handshake: now builds in the oss-fuzz docker container
robertfemmer Apr 3, 2024
44ca08e
Fix padding issue in authentication plugin
eboasson Apr 4, 2024
c82c223
First attempt to add CM interface to the idl
TheFixer Apr 4, 2024
8ebc89e
Merge branch 'master' into fuzz_handshake
robertfemmer Apr 5, 2024
186f3ef
Delete some left-over code
eboasson Apr 4, 2024
e63372e
Add systematic tests for QoS set and match logic
eboasson Apr 8, 2024
32fcbbb
Fix DDS_IGNORELOCAL_PARTICIPANT matching code
eboasson Apr 8, 2024
2fb85d1
data reader has no transport priority QoS
eboasson Apr 8, 2024
9461655
Default pub/sub QoS: presentation and ignore_local
eboasson Apr 9, 2024
95bd6ba
Check creating an entity with invalid QoS fails
eboasson Apr 9, 2024
ab64868
Check QoS changes are accepted/rejected as planned
eboasson Apr 9, 2024
826a070
dds_qset_entity_name should free old value if set
eboasson Apr 9, 2024
6498bf9
Add TOPIC_DATA to ddsi_default_qos_topic
eboasson Apr 10, 2024
ac3c750
Add EXPORT_ALL_SYMBOLS option to build system
eboasson Apr 11, 2024
31a4843
Add fuzzer for security deserializer (#1967)
robertfemmer Apr 12, 2024
08fe238
Merge branch 'master' into fuzz_handshake
robertfemmer Apr 12, 2024
64066d8
Fixes for deserializers in authentication plugin
eboasson Apr 15, 2024
2d0b3ec
Some extra scripting for dealing with fuzzers
eboasson Apr 15, 2024
2ad37f4
Fix handling of empty second copy of PropertySeq
eboasson Apr 16, 2024
b17c425
Initialize the ret variable to fix compiler warnings.
t0ny-peng Apr 17, 2024
63d7ce2
Merge commit 'refs/pull/1968/head' of https://github.com/eclipse-cycl…
eboasson Apr 22, 2024
4d5b6f3
Fix leading underscore handling in IDLC
eboasson Apr 24, 2024
64f9033
Fix size of AF_LINK address on BSD
eboasson Apr 16, 2024
6639902
Syntax check PSMX config string in core code
eboasson Apr 18, 2024
d52f544
Use hash of network config as Iceoryx locator
eboasson Apr 18, 2024
7c253ad
Fix building for Zephyr V3.6, QNX and other platforms that don't supp…
PatrickM-ZS Apr 26, 2024
460851a
Exported the ddsrt_getifaddrs and ddsrt_freeifaddrs symbols which are…
gmartin82 Apr 30, 2024
022ba7a
Fix handshake fuzzer build issue and memory leaks
eboasson Apr 25, 2024
369dc22
Refactor delivery requests: a delivery request is now done for a read…
TheFixer May 7, 2024
64f203c
Merge pull request #1968 from robertfemmer/fuzz_handshake
eboasson May 13, 2024
ff640ac
sysdef parser `b64` decoding support
Splinter1984 Apr 26, 2024
ea68c19
qos_provider history_kind validation remove
Splinter1984 Apr 26, 2024
24c9938
history qos sysdef_parser: ignore `depth` elem when kind is `ALL`
Splinter1984 May 3, 2024
2caad2d
Add missing ddsrt_mutex_lock in gcreq_queue_step
eboasson May 14, 2024
2f16244
Resolve build-time circular dependencies by making the durability cli…
mvandenhoek May 15, 2024
f292e0a
cdrstream test: do not overallocate extern string
eboasson May 15, 2024
d6bdcc1
ddsrt_init suppress gcc 14.1 infinite loop warning
eboasson May 15, 2024
9861c79
Help gcc 14.1 avoid false pos infinite recursion
eboasson May 15, 2024
ff67f4d
Fix Zephyr ipv4 multicast support
PatrickM-ZS May 17, 2024
bcec954
Improve create_participant/domain documentation
eboasson May 15, 2024
d315b88
b64_encode improvements for qos_provider tests
Splinter1984 May 28, 2024
e070ffc
sysdef_parser tsn mac addresses support
Splinter1984 May 28, 2024
12e1158
Support for IDL modules in XML parser
dpotman May 23, 2024
be0e64a
Fix bug in dds_request_loan_of_size
reicheratwork May 29, 2024
e46c533
Remove invalid curly brace in Zephyr support code
PatrickM-ZS Jun 4, 2024
e3de841
Bump CI platforms
eboasson Jun 11, 2024
7c85973
Merge pull request #3 from mvandenhoek/resolve_circular_dependencies_…
TheFixer Jun 11, 2024
e1e2811
Slightly improve dds_waitset_wait_impl() performance by avoinding to …
ivanpauno May 25, 2024
d0a2df1
Provide writer meta-data when storing loaned sample
dpotman Mar 11, 2024
5ed9500
Add user-defined log categories
dpotman Oct 26, 2023
0932697
Add create-participant-with-guid function
dpotman Nov 21, 2023
39a909e
Add create-endpoint-with-guid
dpotman Nov 29, 2023
21736ed
Add no-discovery flag
dpotman Dec 7, 2023
f709b82
Add ddsi_get_port_int to internal header
dpotman Dec 14, 2023
28e7f98
Add function to get type name
dpotman Jan 4, 2024
7cfb88f
Add output parameter to DDSI proxy endpoint create functions
dpotman Feb 5, 2024
5c2c8b5
Add output parameter to DDSI proxy participant create function
dpotman Feb 5, 2024
a95ec69
Some minor DDSI type-ref refactoring
dpotman Apr 8, 2024
9152aa4
Export a set of internal functions
dpotman Feb 6, 2024
4c98862
PSMX deliver samples for non-discovered writers
dpotman Mar 28, 2024
dc96465
Include internal API header is dds_participant
dpotman Apr 10, 2024
c62b471
Fix incorrect CU_ASSERTS in test utils
dpotman Apr 10, 2024
15b3a09
Export dds_entity_lock/unlock
dpotman Apr 11, 2024
a16a718
Check for sync delivery for filtered proxy writers
eboasson Jun 10, 2024
845ae76
Partial support for building on macOS Snow Leopard
eboasson Jun 10, 2024
6aeb7ca
Avoid IP_PKTINFO on Snow Leopard
eboasson Jun 10, 2024
dbba39b
Rename cdrstream parts from .part.c to .part.h
eboasson Jun 7, 2024
f1a2945
Fix trivial compilation issues on BE machines
eboasson Jun 7, 2024
48ac8f4
Fix CDR stream compilation issues on BE machines
eboasson Jun 7, 2024
c8659b2
Fix bool/int confusion in struct ddsi_config
eboasson Jun 10, 2024
77a2fd4
Fix IDLC 32/64-bit confusion for data repr
eboasson Jun 10, 2024
a964e66
Fix IDLC 8/32/64-bit confusion for array bounds
eboasson Jun 10, 2024
2c515a5
Fix type/descriptor mismatch in CDR tests
eboasson Jun 10, 2024
e88924d
CDR test needs to be consistent in endianness
eboasson Jun 10, 2024
f2f4894
Support key serialization test on big-endian hosts
eboasson Jun 10, 2024
2b8b86e
Fix reading of min/max annotation value in test
eboasson Jun 10, 2024
2951b14
Remove dead compile-time conditional
eboasson Jun 10, 2024
1deaa93
Fix ENABLE_IPV6/ENABLE_SOURCE_SPECIFIC_MULTICAST
eboasson Jun 10, 2024
d54189d
oneliner "hearing!" wait for proxypp to be deleted
eboasson Apr 19, 2024
3dea06d
Refactor ddsi_type_add_typeobj
eboasson Jun 14, 2024
e1853ef
Do not change type in typelib making key holder
eboasson Jun 14, 2024
34eef7e
Skip optionals completely when deserializing a key (#2040)
eboasson Jun 17, 2024
a27ebfd
dynsub example: also respond to DCPSSubscription
eboasson Jun 14, 2024
841cd25
dynsub example: fix printing of bitmasks
eboasson Jun 14, 2024
3adfa6c
dynsub example: also print the minimal typeobject
eboasson Jun 14, 2024
f0324c4
dynsub example: support for arrays
eboasson Jun 17, 2024
00c63c3
Export sysdef parser functions
dpotman Jun 17, 2024
d5b2a48
Trace reason for declaring types non-assignable
eboasson Jun 17, 2024
b52b407
UAF in tracing preemptive ACKNACK with security
eboasson Jun 18, 2024
8a2a7a9
Fix harmless typo in dynsub output
eboasson Jun 18, 2024
72b4f86
Use copy of type id in non-assignability reason
eboasson Jun 18, 2024
24c6e8c
Fix loop bounds validating struct without members
eboasson Jun 18, 2024
545f4cb
Type builder: keys from non-mutable base types
eboasson Jun 18, 2024
03b1b09
Fix serdata size in serdata_default_from_psmx
dpotman Jun 19, 2024
f24646b
Fixed memory leak in idl preprocessor (#2023)
reicheratwork Jun 19, 2024
0b81f87
Update ddsi_new_proxy_participant call in fuzzer
eboasson Jun 19, 2024
53ecfa4
Always have a NACK scheduled if data is missing
eboasson Jun 4, 2024
80a4c2c
Consistently set in_file to a malloc'd pointer
eboasson Jun 19, 2024
d7db65c
Fix ACKNACK event mishandling of AANR_SILENT_NACK (#2049)
eboasson Jun 20, 2024
ce7cf3d
check return value of `X509_digest`
poetinger Jul 1, 2024
f5e5d6c
Tests and fixes for PSMX interface
mvandenhoek Jul 15, 2024
5842d13
Implement wfhd
TheFixer Jul 22, 2024
3262baa
Delete broken alternative for thread sanitizer
eboasson Jul 1, 2024
e8120b2
Improve ddsrt_recvmsg interface
eboasson Jun 28, 2024
343d8a2
Turn off PACKET_DESTINATION_INFO for mingw-w64.
eboasson Jul 1, 2024
d917212
Fix error handling in serdata_default_from_psmx
dpotman Jul 23, 2024
f5ac68c
Fixes for support of qnx 8.0
ThijsSassen Aug 14, 2024
565fc6b
add option to set realtime priority to iceorix notification thread (l…
MarcelJordense Aug 21, 2024
9051f4d
Fix to make version check compatible with older qnx versions
ThijsSassen Aug 22, 2024
41b1abb
Fix "oneliner" durability_service specification
eboasson Aug 12, 2024
4de86ec
Add setting for controlling thread affinity
eboasson Aug 12, 2024
b53c54a
fix compilation issue on qnx
MarcelJordense Aug 22, 2024
4c0a3f0
expose-seqnum-via-sampleinfo
TheFixer Dec 4, 2019
dc33523
Use seqno_t as type for sequence numbers (which is defined as uint64_t)
TheFixer Nov 18, 2022
ae0dc84
Removed seq_no from dds_sampleinfo_t and add sequence_number to ddsi_…
TheFixer Dec 21, 2022
6ca7432
Add .get_sequencenumber function to ddsi_serdata_ops interface, so th…
TheFixer Jan 23, 2023
45a6636
First attempt to add writer guid to serdata interface
TheFixer May 1, 2023
5e19507
Implement function dds_reader_store_historical_data() to deliver serd…
TheFixer Jun 1, 2023
5484e8c
Use lifespan set to DDSRT_MTIME_NEVER when adding historical serdata …
TheFixer Jul 7, 2023
1e71cd8
create cmake infrastructure for durability
TheFixer Sep 14, 2023
2ffb659
Add durability as a trace category and initialize durability when the…
TheFixer Oct 10, 2023
45a1805
Do send a nack if a gap for durable data i detected
TheFixer Oct 10, 2023
839ef4b
Quorum implementation based on subscription matched for durable writers
TheFixer Oct 13, 2023
0297892
quorum checking for durable writers
TheFixer Oct 16, 2023
513c1d7
Use similar idl files for durable client as for durable server
TheFixer Oct 17, 2023
a4ffe3d
Initialize quorum_reached variable correctly in case quorum threshold…
TheFixer Oct 20, 2023
3b1ed77
Use dds_get_matched_subscriptions() in dc_check_quorum_reched() to de…
TheFixer Oct 20, 2023
7652c5a
fix sanitizer error due to double free
mvandenhoek Oct 24, 2023
12216fa
Publish dc_request when a durable reader is created
TheFixer Nov 3, 2023
7df91d9
Make dc_requests transient-local and autodispose, and add the ability…
TheFixer Nov 7, 2023
d35a1ed
Add additional check on the length of topic names in dc_requests
TheFixer Nov 13, 2023
2c4016a
Rebase the expose-seqnum-via-sampleinfo on current master
TheFixer Nov 15, 2023
6af4159
Implement receiving dc_response from a DS
TheFixer Nov 17, 2023
1f03cb5
expose symbols when building with durable support, fix goto labels
mvandenhoek Nov 21, 2023
e23e202
Refactor administration of requests; requests are now organised per s…
TheFixer Dec 6, 2023
a72343c
Add ability to receive responses from a ds
TheFixer Dec 11, 2023
c538a64
Deliver data beads per data set to a dc, and allow delivery of data b…
TheFixer Dec 14, 2023
7e6c1f8
Data delivery to local readers
TheFixer Dec 20, 2023
ff823ef
Encode the writer's autodispose setting in response beads
TheFixer Dec 30, 2023
4eae0d7
Inject historical data as unregistered when the proxy writer is not (…
TheFixer Jan 2, 2024
eb31716
Fix crash when printing octet sequence, and improve printing of trunc…
TheFixer Jan 5, 2024
30c1db1
Add //CycloneDDS/Domain/Durability/Quorum configuration option to set…
TheFixer Feb 7, 2024
28ec521
Add type_id to dc_request and dc_response
TheFixer Mar 18, 2024
353fad4
Fix merge issues when rebasing on CycloneDDS master
TheFixer Mar 22, 2024
f06a86b
Exclude test cases for transient and persistent profiles when there i…
TheFixer Mar 22, 2024
22d638b
Don't set a quorum on writers created by a DS
TheFixer Mar 29, 2024
d1af80e
Don't run security tests when durability is enabled (they don't go we…
TheFixer Mar 29, 2024
bc4e598
Add reader guid to dc_request
TheFixer Apr 2, 2024
f023417
First attempt to add CM interface to the idl
TheFixer Apr 4, 2024
c2899a9
Refactor delivery requests: a delivery request is now done for a read…
TheFixer May 7, 2024
c4e259e
Resolve build-time circular dependencies by making the durability cli…
mvandenhoek May 15, 2024
6bd3816
Implement wfhd
TheFixer Jul 22, 2024
95ba340
Fix merge conflicts when rebasing on master
TheFixer Sep 2, 2024
2345f50
Resolve merge conflicts related to logging and documentation
TheFixer Sep 2, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .azure/templates/build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,15 @@ steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.8'
condition: eq(variables['Agent.OS'], 'Windows_NT')
name: install_python
- bash: |
# Asan in llvm 14 provided in ubuntu 22.04 is incompatible with
# high-entropy ASLR in much newer kernels that GitHub runners are
# using leading to random crashes: https://reviews.llvm.org/D148280
sudo sysctl vm.mmap_rnd_bits=28
condition: eq(variables['Agent.OS'], 'Linux')
name: fix_kernel_mmap_rnd_bits
# Set defaults from steps to share them among pipelines
- bash: |
[[ -n "${ARCH}" ]] || \
Expand All @@ -39,6 +47,13 @@ steps:
echo "###vso[task.setvariable variable=pip_cache;]${HOME}/Library/Caches/pip"
echo "###vso[task.setvariable variable=PATH;]$(python3 -m site --user-base)/bin:${PATH}"
echo "###vso[task.setvariable variable=build_tool_options;]-j 4"
# If preferred compiler version is not available, try updating homebrew and installing it
if which "$CC" ; then \
echo "$CC" is already available ; \
else \
brew update ; \
brew install "`echo "$CC" | sed -e 's/-/@/'`" ; \
fi
condition: eq(variables['Agent.OS'], 'Darwin')
name: setup_macos
# Use PowerShell rather than Bash to ensure Windows-style paths
Expand Down
12 changes: 12 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,10 @@ elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
if(${WERROR})
add_compile_options(-Werror)
add_link_options(-Werror)
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0 AND CMAKE_C_COMPILER_VERSION VERSION_LESS 13.2)
add_compile_options(-Wno-error=stringop-overflow -Wno-error=array-bounds)
add_link_options(-Wno-error=stringop-overflow -Wno-error=array-bounds)
endif()
endif()
if("${CMAKE_GENERATOR}" STREQUAL "Ninja")
add_compile_options(-fdiagnostics-color=always)
Expand Down Expand Up @@ -242,6 +246,10 @@ set(MEMORYCHECK_COMMAND_OPTIONS "--track-origins=yes --leak-check=full --trace-c
# library so we can actually build the tests.
option(BUILD_TESTING "Build the testing tree." OFF)

# For special-purpose builds it can be useful to export all symbols from the library,
# like we do when building the tests.
option(EXPORT_ALL_SYMBOLS "Export all symbols from the library." OFF)

# Include the xtests for idlc. These tests use the idl compiler (C back-end) to
# compile an idl file at (test) runtime, and use the C compiler to build a test
# application for the generated types, that is executed to do the actual testing.
Expand Down Expand Up @@ -339,6 +347,10 @@ install(
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
COMPONENT dev
)
install(
FILES "${CycloneDDS_SOURCE_DIR}/cmake/Modules/Generate.cmake"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/idlc"
COMPONENT dev)

# Generated file paths
# although the following files are generated, they are checked into source
Expand Down
4 changes: 1 addition & 3 deletions PackageConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,4 @@
@PACKAGE_INIT@

include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
if(TARGET CycloneDDS::idlc)
include("${CMAKE_CURRENT_LIST_DIR}/idlc/Generate.cmake")
endif()
include("${CMAKE_CURRENT_LIST_DIR}/idlc/Generate.cmake")
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ In order to build Cyclone DDS you need a Linux, Mac or Windows 10 machine (or, w
* C compiler (most commonly GCC on Linux, Visual Studio on Windows, Xcode on macOS);
* Optionally GIT version control system;
* [CMake](https://cmake.org/download/), version 3.16 or later;
* Optionally [OpenSSL](https://www.openssl.org/), preferably version 1.1;
* Optionally [OpenSSL](https://www.openssl.org/), we recommend a fully patched and supported version but 1.1.1 will still work;
* Optionally [Eclipse Iceoryx](https://iceoryx.io) version 2.0 for shared memory and zero-copy support;
* Optionally [Bison](https://www.gnu.org/software/bison/) parser generator. A cached source is checked into the repository.

Expand Down Expand Up @@ -148,6 +148,7 @@ There are some configuration options specified using CMake defines in addition t
* `-DENABLE_SOURCE_SPECIFIC_MULTICAST=NO`: to disable support for source-specific multicast (disabling this and `-DENABLE_IPV6=NO` may be needed for QNX builds)
* `-DENABLE_IPV6=NO`: to disable ipv6 support (disabling this and `-DENABLE_SOURCE_SPECIFIC_MULTICAST=NO` may be needed for QNX builds)
* `-DBUILD_IDLC_XTESTS=NO`: Include a set of tests for the IDL compiler that use the C back-end to compile an idl file at (test) runtime, and use the C compiler to build a test application for the generated types, that is executed to do the actual testing (not supported on Windows)
* `-DENABLE_QOS_PROVIDER=NO`: to disable support for qos provider

### For application developers

Expand Down
95 changes: 39 additions & 56 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,35 +24,28 @@ jobs:
vmImage: $(image)
strategy:
matrix:
#gcc-12.2 is the first version of gcc's static analyzer that accepts this code
#without -Wno-analyzer-malloc-leak without any false positives. Ubuntu is far
#behind in gcc versions, and so falling back to macOS is the most pragmatic
#option at this time.
#'Ubuntu 22.04 LTS with GCC 12 (Debug, x86_64)':
# image: ubuntu-22.04
# analyzer: on
# # not enabling "undefined" because of some false positives
# sanitizer: address
# cc: gcc-12
# coverage: on
'Ubuntu 20.04 LTS with GCC 10 (Release, x86_64)':
'Ubuntu 20.04 LTS (Release, x86_64)':
image: ubuntu-20.04
build_type: Release
sanitizer: undefined
cc: gcc-10
'Ubuntu 22.04 LTS with GCC 10 (Debug, x86_64, Iceoryx)':
cc: gcc
'Ubuntu 22.04 LTS (Debug, x86_64, Iceoryx)':
image: ubuntu-22.04
#analyzer: on # disabled for now because of warnings
sanitizer: address,undefined
# No address sanitizer because of this in test run:
# Shadow memory range interleaves with an existing memory mapping.
# ASan cannot proceed correctly. ABORTING.
# ASan shadow was supposed to be located in the [0x00007fff7000-0x10007fff7fff]
# range.
sanitizer: undefined
iceoryx: on
cc: gcc-10
cc: gcc
coverage: on
'Ubuntu 22.04 LTS with GCC 10 (Release, x86_64)':
'Ubuntu 22.04 LTS (Release, x86_64)':
image: ubuntu-22.04
build_type: Release
sanitizer: undefined
cc: gcc-10
'Ubuntu 22.04 LTS with GCC 10 (Debug, x86_64, security only)':
cc: gcc
'Ubuntu 22.04 LTS with GCC 12 (Debug, x86_64, security only)':
image: ubuntu-22.04
sanitizer: address,undefined
ssl: off
Expand All @@ -61,72 +54,62 @@ jobs:
type_discovery: off
topic_discovery: off
idlc_xtests: off # temporary disabled because of passing -t option to idlc in this test for recursive types
cc: gcc-10
'Ubuntu 22.04 LTS with GCC 10 (Debug, x86_64, no tests)':
cc: gcc-12
'Ubuntu 22.04 LTS with GCC 12 (Debug, x86_64, no tests)':
image: ubuntu-22.04
cc: gcc-10
cc: gcc-12
testing: off
idlc_xtests: off
'Ubuntu 22.04 LTS with Clang 13 (Debug, x86_64)':
'Ubuntu 22.04 LTS with Clang (Debug, x86_64)':
image: ubuntu-22.04
analyzer: on
sanitizer: address,undefined
cc: clang-13
'Ubuntu 22.04 LTS with Clang 13 (Debug, x86_64, no security)':
cc: clang
'Ubuntu 22.04 LTS with Clang (Debug, x86_64, no security)':
image: ubuntu-22.04
sanitizer: address,undefined
security: off
cc: clang-13
'Ubuntu 22.04 LTS with Clang 13 (Release, x86_64, no topic discovery)':
cc: clang
'Ubuntu 22.04 LTS with Clang (Release, x86_64, no topic discovery)':
image: ubuntu-22.04
build_type: Release
sanitizer: undefined
topic_discovery: off
idlc_xtests: off # temporary disabled because of passing -t option to idlc in this test for recursive types
cc: clang-13
'macOS 11 with Clang 12 (Debug, x86_64)':
image: macOS-11
sanitizer: address,undefined
deadline_update_skip: on
cc: clang
'macOS 11 with Clang 12 (Release, x86_64)':
image: macOS-11
build_type: Release
sanitizer: undefined
'macOS 14 with Clang (Debug, x86_64)':
image: macos-14
sanitizer: address,undefined
deadline_update_skip: on
cc: clang
'macOS 11 with Clang 13 (Release, x86_64)':
image: macOS-11
coverage: on
'macOS 14 with Clang (Release, x86_64)':
image: macos-14
build_type: Release
sanitizer: undefined
deadline_update_skip: on
cc: clang
coverage: on
'macOS 12 with gcc 12 (Debug, analyzer, x86_64)':
image: macOS-12
sanitizer: undefined
deadline_update_skip: on
cc: gcc-12
'macOS 14 with GCC 14 (Debug, analyzer, x86_64)':
image: macos-14
cc: gcc-14
analyzer: on
# 32-bit Windows: without SSL/security because Chocolateley only provides 64-bit OpenSSL
'Windows 2019 with Visual Studio 2019 (Visual Studio 2017, Debug, x86, no security)':
'Windows 2022 with Visual Studio 2022 (Debug, x86, no security)':
arch: x86
image: windows-2019
image: windows-2022
ssl: off
security: off
idlc_xtests: off
generator: 'Visual Studio 16 2019'
toolset: v141
'Windows 2019 with Visual Studio 2019 (Debug, x86_64)':
image: windows-2019
generator: 'Visual Studio 17 2022'
'Windows 2022 with Visual Studio 2022 (Debug, x86_64)':
image: windows-2022
idlc_xtests: off
generator: 'Visual Studio 16 2019'
'Windows 2019 with Visual Studio 2019 (Release, x86_64, no tests)':
image: windows-2019
generator: 'Visual Studio 17 2022'
'Windows 2022 with Visual Studio 2022 (Release, x86_64, no tests)':
image: windows-2022
build_type: Release
testing: off
idlc_xtests: off
generator: 'Visual Studio 16 2019'
generator: 'Visual Studio 17 2022'
'Windows 2019 with Visual Studio 2019 (RelWithDebInfo, x86_64)':
image: windows-2019
build_type: RelWithDebInfo
Expand Down
4 changes: 1 addition & 3 deletions docs/dev/dds_security_effort.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,9 +137,7 @@ No major changes between the DDS Security plugins in OpenSplice and Cyclone
are expected.

The DDS Security plugins require OpenSSL. Cyclone DDS already uses OpenSSL.
However, it expects (or at least it's preferred to have) version 1.1 or newer,
while the OpenSplice Security plugins are build against 1.0.2. There are some
API changes between the two versions. This will take some porting effort.
We recommend a fully patched and supported version but 1.1.1 will still work.

The build system should be ported from makefiles to cmake files.

Expand Down
65 changes: 33 additions & 32 deletions docs/manual/about_dds/eclipse_cyclone_dds.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
datareaders
datawriters
qos
qos_provider
listener
waitset
status
Expand All @@ -30,28 +31,28 @@
ddsi_concepts
contributing

|var-project| is a performant and robust OMG-compliant **Data Distribution Service**
(DDS) implementation (see |url::dds_spec|). |var-project-short| is developed
completely in the open as an Eclipse IoT project (see |url::cyclone_dds-link|) with a
growing list of |url::cyclone_adopters|. It is a tier-1 middleware for the Robot
|var-project| is a performant and robust OMG-compliant **Data Distribution Service**
(DDS) implementation (see |url::dds_spec|). |var-project-short| is developed
completely in the open as an Eclipse IoT project (see |url::cyclone_dds-link|) with a
growing list of |url::cyclone_adopters|. It is a tier-1 middleware for the Robot
Operating System |url::ros2|.

The core of |var-project-short| is implemented in C and provides C-APIs to applications.
The core of |var-project-short| is implemented in C and provides C-APIs to applications.
Through its C++ package, the |url::omg.org| 2003 language binding is also supported.

.. index:: About DDS

About DDS
=========

DDS is the best-kept secret in distributed systems, one that has been around for much
DDS is the best-kept secret in distributed systems, one that has been around for much
longer than most publish-subscribe messaging systems and still outclasses so many of them.
DDS is used in a wide variety of systems, including air-traffic control, jet engine
testing, railway control, medical systems, naval command-and-control, smart greenhouses
and much more. In short, it is well-established in aerospace and defense but no longer
DDS is used in a wide variety of systems, including air-traffic control, jet engine
testing, railway control, medical systems, naval command-and-control, smart greenhouses
and much more. In short, it is well-established in aerospace and defense but no longer
limited to that. And yet it is easy to use!

Types are usually defined in IDL and preprocessed with the IDL compiler included in Cyclone,
Types are usually defined in IDL and preprocessed with the IDL compiler included in Cyclone,
but our |url::python-link2| allows you to define data types on the fly:

.. code-block:: python
Expand Down Expand Up @@ -96,30 +97,30 @@ but our |url::python-link2| allows you to define data types on the fly:
print("Read ", sample)
sleep(rng.exponential())

Today DDS is also popular in robotics and autonomous vehicles because those really
depend on high-throughput, low-latency control systems without introducing a single
point of failure by having a message broker in the middle. Indeed, it is by far the
most used and the default middleware choice in ROS 2. It is used to transfer commands,
Today DDS is also popular in robotics and autonomous vehicles because those really
depend on high-throughput, low-latency control systems without introducing a single
point of failure by having a message broker in the middle. Indeed, it is by far the
most used and the default middleware choice in ROS 2. It is used to transfer commands,
sensor data and even video and point clouds between components.

The OMG DDS specifications cover everything one needs to build systems using
publish-subscribe messaging. They define a structural type system that allows
automatic endianness conversion and type checking between readers and writers. This
type system also supports type evolution. The interoperable networking protocol and
standard C++ API make it easy to build systems that integrate multiple DDS
implementations. Zero-configuration discovery is also included in the standard and
The OMG DDS specifications cover everything one needs to build systems using
publish-subscribe messaging. They define a structural type system that allows
automatic endianness conversion and type checking between readers and writers. This
type system also supports type evolution. The interoperable networking protocol and
standard C++ API make it easy to build systems that integrate multiple DDS
implementations. Zero-configuration discovery is also included in the standard and
supported by all implementations.

DDS actually brings more: publish-subscribe messaging is a nice abstraction over
"ordinary" networking, but plain publish-subscribe doesn't affect how one *thinks*
about systems. A very powerful architecture that truly changes the perspective on
distributed systems is that of the "shared data space", in itself an old idea, and
really just a distributed database. Most shared data space designs have failed
miserably in real-time control systems because they provided strong consistency
guarantees and sacrificed too much performance and flexibility. The *eventually
consistent* shared data space of DDS has been very successful in helping with building
systems that need to satisfy many "ilities": dependability, maintainability,
extensibility, upgradeability, ... Truth be told, that's why it was invented, and
DDS actually brings more: publish-subscribe messaging is a nice abstraction over
"ordinary" networking, but plain publish-subscribe doesn't affect how one *thinks*
about systems. A very powerful architecture that truly changes the perspective on
distributed systems is that of the "shared data space", in itself an old idea, and
really just a distributed database. Most shared data space designs have failed
miserably in real-time control systems because they provided strong consistency
guarantees and sacrificed too much performance and flexibility. The *eventually
consistent* shared data space of DDS has been very successful in helping with building
systems that need to satisfy many "ilities": dependability, maintainability,
extensibility, upgradeability, ... Truth be told, that's why it was invented, and
publish-subscribe messaging was simply an implementation technique.

|var-project| aims at full coverage of the specs and today already covers most of this.
Expand All @@ -136,8 +137,8 @@ With references to the individual OMG specifications, the following is available
- |url::dds_xtypes| - the structural type system (some [caveats](docs/dev/xtypes_relnotes.md) here)
- |url::dds2.5| - the interoperable network protocol

The network stack in |var-project| has been around for over a decade in one form or
another and has proven itself in many systems, including large, high-availability
The network stack in |var-project| has been around for over a decade in one form or
another and has proven itself in many systems, including large, high-availability
ones and systems where inter-operation with other implementations was needed.

.. include:: disclaimer.part.rst
Loading
Loading