Merge branch 'master' into merge6
Signed-off-by: Martin Bremmer <martin.bremmer@adlinktech.com>
This commit is contained in:
commit
660d495746
124 changed files with 5049 additions and 1672 deletions
|
@ -8,5 +8,43 @@
|
|||
# http://www.eclipse.org/org/documents/edl-v10.php.
|
||||
#
|
||||
# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
|
||||
add_subdirectory(manual)
|
||||
include(FindPerl)
|
||||
if(PERL_FOUND)
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
options.md cyclonedds.rnc
|
||||
COMMAND
|
||||
${PERL_EXECUTABLE} -w "${CMAKE_CURRENT_SOURCE_DIR}/makernc.pl" "${CMAKE_CURRENT_SOURCE_DIR}/../src/core/ddsi/src/q_config.c" options.md cyclonedds.rnc
|
||||
COMMAND
|
||||
${PERL_EXECUTABLE} -w "${CMAKE_CURRENT_SOURCE_DIR}/compare.pl" options.md "${CMAKE_CURRENT_SOURCE_DIR}/manual/options.md"
|
||||
COMMAND
|
||||
${PERL_EXECUTABLE} -w "${CMAKE_CURRENT_SOURCE_DIR}/compare.pl" cyclonedds.rnc "${CMAKE_CURRENT_SOURCE_DIR}/../etc/cyclonedds.rnc"
|
||||
DEPENDS
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/makernc.pl"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../src/core/ddsi/src/q_config.c")
|
||||
add_custom_target(options_doc ALL DEPENDS "options.md" "cyclonedds.rnc")
|
||||
|
||||
find_package(Java COMPONENTS Runtime)
|
||||
if(JAVA_FOUND AND EXISTS "${TRANG_PATH}" OR EXISTS "$ENV{TRANG}")
|
||||
if(NOT EXISTS "${TRANG_PATH}" AND EXISTS "$ENV{TRANG}")
|
||||
message(STATUS "Setting TRANG_PATH to $ENV{TRANG}")
|
||||
set(TRANG_PATH "$ENV{TRANG}" CACHE FILEPATH "Location of 'trang' for converting XML schemas" FORCE)
|
||||
endif()
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
cyclonedds.xsd
|
||||
COMMAND
|
||||
${Java_JAVA_EXECUTABLE} -jar "${TRANG_PATH}" -I rnc -O xsd cyclonedds.rnc cyclonedds.xsd
|
||||
COMMAND
|
||||
${PERL_EXECUTABLE} -w "${CMAKE_CURRENT_SOURCE_DIR}/compare.pl" cyclonedds.xsd "${CMAKE_CURRENT_SOURCE_DIR}/../etc/cyclonedds.xsd"
|
||||
DEPENDS
|
||||
"cyclonedds.rnc")
|
||||
add_custom_target(options_xsd ALL DEPENDS "cyclonedds.xsd")
|
||||
else()
|
||||
message(STATUS "Java or not trang not found: not converting/checking RNC to XSD")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "perl not found: not generating/checking options documentation and RNC")
|
||||
endif()
|
||||
|
||||
add_subdirectory(manual)
|
||||
|
|
8
docs/compare.pl
Normal file
8
docs/compare.pl
Normal file
|
@ -0,0 +1,8 @@
|
|||
open A, "< $ARGV[0]" or die "can't open $ARGV[0]";
|
||||
open B, "< $ARGV[1]" or die "can't open $ARGV[1]";
|
||||
while (defined ($a = <A>) && defined ($b = <B>)) {
|
||||
$a =~ s/[\r\n]+$//s;
|
||||
$b =~ s/[\r\n]+$//s;
|
||||
print "$ARGV[0] difference detected\n" and exit 1 unless $a eq $b;
|
||||
}
|
||||
exit 0;
|
|
@ -156,7 +156,8 @@ my %tables;
|
|||
my @root = read_config ($input);
|
||||
|
||||
{
|
||||
open my $fh, ">", "$output_rnc" or die "can't open $output_rnc";
|
||||
open my $fh, ">:unix", "$output_rnc" or die "can't open $output_rnc";
|
||||
print $fh "default namespace = \"https://cdds.io/config\"\n";
|
||||
print $fh "namespace a = \"http://relaxng.org/ns/compatibility/annotations/1.0\"\n";
|
||||
print $fh "grammar {\n";
|
||||
print $fh " start =\n";
|
||||
|
@ -170,7 +171,7 @@ my @root = read_config ($input);
|
|||
}
|
||||
|
||||
{
|
||||
open my $fh, ">", "$output_md" or die "can't open $output_md";
|
||||
open my $fh, ">:unix", "$output_md" or die "can't open $output_md";
|
||||
my $sep_blurb = "";
|
||||
conv_table($fh, \&conv_to_md, \@root, "/", " ", "", \$sep_blurb);
|
||||
close $fh;
|
||||
|
@ -315,12 +316,14 @@ sub conv_to_rnc {
|
|||
print_description_rnc ($fh, $fs->{description}, $indent);
|
||||
printf $fh "${indent}%s %s {\n", ($fs->{kind} eq "ATTR" ? "attribute" : "element"), $name;
|
||||
|
||||
my $sub_isfirst = 1;
|
||||
conv_table($fh, \&conv_to_rnc, $fs->{subtables}, $fqname, "${indent} ", $prefix, \$sub_isfirst);
|
||||
my $sep = $sub_isfirst ? "" : "& ";
|
||||
|
||||
if ($fs->{kind} eq "GROUP" || $fs->{kind} eq "MGROUP") {
|
||||
my $sub_isfirst = 1;
|
||||
conv_table($fh, \&conv_to_rnc, $fs->{subtables}, $fqname, "${indent} ", $prefix, \$sub_isfirst);
|
||||
printf $fh "${indent} empty\n" if $sub_isfirst;
|
||||
printf $fh "${indent} ${sep}empty\n" if $sub_isfirst;
|
||||
} elsif ($fs->{kstr} eq "Boolean") {
|
||||
printf $fh "${indent} xsd:boolean\n";
|
||||
printf $fh "${indent} ${sep}xsd:boolean\n";
|
||||
} elsif ($fs->{kstr} eq "Comma") {
|
||||
die unless exists $comma_values{$fs->{typehint}};
|
||||
my $pat = "";
|
||||
|
@ -337,13 +340,13 @@ sub conv_to_rnc {
|
|||
}
|
||||
}
|
||||
$pat .= "|" if $allowempty;
|
||||
printf $fh "${indent} xsd:token { pattern = \"%s\" }\n", $pat;
|
||||
printf $fh "${indent} ${sep}xsd:token { pattern = \"%s\" }\n", $pat;
|
||||
} elsif ($fs->{kstr} eq "Enum") {
|
||||
die unless exists $enum_values{$fs->{typehint}};
|
||||
my @vs = split /;/, $enum_values{$fs->{typehint}};
|
||||
printf $fh "${indent} %s\n", (join '|', map { "\"$_\"" } @vs);
|
||||
printf $fh "${indent} ${sep}%s\n", (join '|', map { "\"$_\"" } @vs);
|
||||
} elsif ($fs->{kstr} eq "Int") {
|
||||
printf $fh "${indent} xsd:integer\n";
|
||||
printf $fh "${indent} ${sep}xsd:integer\n";
|
||||
#if (exists $range{$lctn} || exists $range{$fs->{typehint}}) {
|
||||
# # integer with range
|
||||
# my $rr = exists $range{$lctn} ? $range{$lctn} : $range{$fs->{typehint}};
|
||||
|
@ -351,9 +354,9 @@ sub conv_to_rnc {
|
|||
#}
|
||||
} elsif ($typehint2unit{$fs->{typehint}}) {
|
||||
# number with unit
|
||||
printf $fh "${indent} $typehint2unit{$fs->{typehint}}\n";
|
||||
printf $fh "${indent} ${sep}$typehint2unit{$fs->{typehint}}\n";
|
||||
} elsif ($typehint2xmltype{$fs->{typehint}} =~ /String$/) {
|
||||
printf $fh "${indent} text\n";
|
||||
printf $fh "${indent} ${sep}text\n";
|
||||
} else {
|
||||
die;
|
||||
}
|
||||
|
@ -393,7 +396,7 @@ sub conv_to_md {
|
|||
|
||||
# Describe type (boolean, integer, &c.); for a group list its attributes and children as
|
||||
# links to their descriptions
|
||||
if ($fs->{kind} eq "GROUP" || $fs->{kind} eq "MGROUP") {
|
||||
{
|
||||
my %children = ("attributes" => [], "elements" => []);
|
||||
conv_table($fh, \&list_children_md, $fs->{subtables}, "", "${indent} ", $prefix, \%children);
|
||||
if (@{$children{attributes}} > 0) {
|
||||
|
@ -406,6 +409,10 @@ sub conv_to_md {
|
|||
my @ys = map { my $lt = lc "$fqname\[\@$_]"; $lt =~ s/[^a-z0-9]//g; "[$_](#$lt)" } @xs;
|
||||
printf $fh "Children: %s\n\n", (join ', ', @ys);
|
||||
}
|
||||
}
|
||||
|
||||
if ($fs->{kind} eq "GROUP" || $fs->{kind} eq "MGROUP") {
|
||||
# nothing to see here
|
||||
} elsif ($fs->{kstr} eq "Boolean") {
|
||||
printf $fh "Boolean\n";
|
||||
} elsif ($fs->{kstr} eq "Comma") {
|
||||
|
@ -451,9 +458,7 @@ sub conv_to_md {
|
|||
print_description_md ($fh, $fs->{description}, $indent);
|
||||
|
||||
# Generate attributes & children
|
||||
if ($fs->{kind} eq "GROUP" || $fs->{kind} eq "MGROUP") {
|
||||
conv_table($fh, \&conv_to_md, $fs->{subtables}, $fqname, "${indent} ", $prefix, $separator_blurb_ref);
|
||||
}
|
||||
conv_table($fh, \&conv_to_md, $fs->{subtables}, $fqname, "${indent} ", $prefix, $separator_blurb_ref);
|
||||
}
|
||||
|
||||
sub conv_table {
|
||||
|
@ -481,6 +486,7 @@ sub read_config {
|
|||
'DDSI_INCLUDE_SSL' => 1,
|
||||
'DDSI_INCLUDE_NETWORK_PARTITIONS' => 1,
|
||||
'DDSI_INCLUDE_SSM' => 1,
|
||||
'DDSI_INCLUDE_SECURITY' => 1,
|
||||
# excluded options
|
||||
'DDSI_INCLUDE_NETWORK_CHANNELS' => 0,
|
||||
'DDSI_INCLUDE_BANDWIDTH_LIMITING' => 0);
|
||||
|
@ -490,7 +496,7 @@ sub read_config {
|
|||
my @stk = (); # stack of conditional nesting, for each: copy/discard/ignore
|
||||
open FH, "<", $input or die "can't open $input\n";
|
||||
while (<FH>) {
|
||||
chomp;
|
||||
s/[\r\n]+$//s;
|
||||
|
||||
# ignore parts guarded by #if/#ifdef/#if!/#ifndef if $incl says so
|
||||
if (/^\s*\#\s*if(n?def|\s*!)?\s*([A-Za-z_][A-Za-z_0-9]*)\s*(?:\/(?:\/.*|\*.*?\*\/)\s*)?$/) {
|
||||
|
|
|
@ -46,99 +46,7 @@ used for building your own applications.
|
|||
|
||||
|
||||
Build Files
|
||||
===========
|
||||
|
||||
Three files are available *Hello World!* root directory to support
|
||||
building the example. Both
|
||||
:ref:`Windows native <WindowsNativeBuild>` (HelloWorld.sln) and
|
||||
:ref:`Linux native <LinuxNativeBuild>` (Makefile) build files
|
||||
will only be available for this *Hello World!* example. All the
|
||||
other examples make use of the :ref:`CMake <CMakeIntro>` build
|
||||
system and thus only have the CMakeLists.txt build related file.
|
||||
|
||||
.. _`LinuxNativeBuild`:
|
||||
|
||||
Linux Native Build
|
||||
==================
|
||||
|
||||
A Linux native :code:`Makefile` is provided in the
|
||||
:code:`examples/helloworld` directory within the destination location
|
||||
entered in the
|
||||
:ref:`vdds_install_examples script <CopyLinuxExamplesToUserFriendlyLocation>`.
|
||||
In a terminal, go to that directory and type
|
||||
::
|
||||
|
||||
make
|
||||
|
||||
The build process should have access to the include files and
|
||||
the ddsc library. The Makefile expects them to be present at
|
||||
system default locations so that it can find them automatically.
|
||||
If this isn't the case on your machine, then please
|
||||
update the commented out :code:`CFLAGS` and :code:`LDFLAGS` within the
|
||||
:code:`Makefile` to point to the proper locations.
|
||||
|
||||
This will build the HelloworldSubscriber and HelloworldPublisher
|
||||
executables in the helloworld source directory (not the bin
|
||||
directory that contains the pre-build binaries).
|
||||
|
||||
The *Hello World!* example can now be executed,
|
||||
like described in :ref:`Test your installation <TestYourInstallation>`,
|
||||
using the binaries that were just build. Be sure to use the right directories.
|
||||
|
||||
|
||||
.. _`WindowsNativeBuild`:
|
||||
|
||||
Windows Native Build
|
||||
====================
|
||||
|
||||
For the Windows Native Build, a Visual Studio solution file is
|
||||
available in the :code:`examples/helloworld` directory. Use a
|
||||
file explorer to navigate to that directory and double click on
|
||||
the :code:`HelloWorld.sln` file. Visual Studio should now start
|
||||
with the HelloWorld solution that contains three projects.
|
||||
|
||||
+----------------------+-------------------------------------------------+
|
||||
| Project | Description |
|
||||
+======================+=================================================+
|
||||
| HelloWorldPublisher | Information to build the example publisher. |
|
||||
+----------------------+-------------------------------------------------+
|
||||
| HelloWorldSubscriber | Information to build the example subcriber. |
|
||||
+----------------------+-------------------------------------------------+
|
||||
| HelloWorldType | Information to (re)generate |
|
||||
| | :ref:`HelloWorldData_Msg <HelloWorldDataFiles>` |
|
||||
| | data type. |
|
||||
+----------------------+-------------------------------------------------+
|
||||
|
||||
Creating the *Hello World!* example executables is as simple as
|
||||
selecting the required configuration and building the solution.
|
||||
|
||||
:code:`helloworld\vs\directories.props` contains the location of where
|
||||
the Eclipse Cyclone DDS header files and libraries are be placed. These locations
|
||||
are based on the default installation directory structure. When Eclipse Cyclone DDS
|
||||
is installed in a different directory, the following paths in
|
||||
:code:`helloworld\vs\directories.props` should be changed, like:
|
||||
|
||||
.. code-block:: xml
|
||||
|
||||
<CycloneDDS_lib_dir>C:/Path/To/CycloneDDS/Installation/lib</CycloneDDS_lib_dir>
|
||||
<CycloneDDS_inc_dir>C:/Path/To/CycloneDDS/Installation/include</CycloneDDS_inc_dir>
|
||||
<CycloneDDS_idlc_dir>C:/Path/To/CycloneDDS/Installation/share/CycloneDDS/idlc</CycloneDDS_idlc_dir>
|
||||
|
||||
To run the example, Visual Studio should run both the publisher
|
||||
and subscriber simultaneously. It is capable of doing so, but
|
||||
it's not its default setting. To change it, open the HelloWorld
|
||||
solution property page by right clicking the solution and
|
||||
selecting :code:`Properties`. Then go to :code:`Common Properties`
|
||||
-> :code:`Startup Project`, select :code:`Multiple startup project`
|
||||
and set :code:`Action "Start"` for HelloWorldPublisher and
|
||||
HelloWorldSubscriber. Finish the change by selecting :code:`OK`.
|
||||
|
||||
Visual Studio is now ready to actually run the *Hello World!*
|
||||
example, which can be done by selecting :code:`Debug` ->
|
||||
:code:`Start without debugging`.
|
||||
Both the HelloworldSubscriber and the HelloworldPublisher will be
|
||||
started and the HelloworldPublisher will write a message that is
|
||||
received by the HelloworldSubscriber.
|
||||
|
||||
.. _`BuildingWithCMake`:
|
||||
|
||||
|
@ -146,11 +54,6 @@ received by the HelloworldSubscriber.
|
|||
Building With CMake
|
||||
*******************
|
||||
|
||||
In the earlier chapters, building the *Hello World!* example is done
|
||||
natively. However, the *Hello World!* example can also be build using the
|
||||
`CMake tool <http://cmake.org>`_. This is what is recommended. In fact,
|
||||
all the other examples don't provide native makefiles, only CMake files.
|
||||
|
||||
|
||||
.. _`CMakeIntro`:
|
||||
|
||||
|
@ -190,10 +93,8 @@ scope of this document.
|
|||
Hello World! CMake (CycloneDDS Package)
|
||||
=======================================
|
||||
|
||||
After the CMake digression, we're back with the *Hello World!*
|
||||
example. Apart from the native build files, CMake build files
|
||||
are provided as well. See
|
||||
:code:`examples/helloworld/CMakeLists.txt`
|
||||
Specifying how to build the *Hello World!* example requires only a few
|
||||
lines of configuration in :code:`examples/helloworld/CMakeLists.txt`
|
||||
|
||||
.. literalinclude:: ../../../examples/helloworld/CMakeLists.export
|
||||
:linenos:
|
||||
|
@ -206,13 +107,12 @@ look in the default locations for the code:`CycloneDDS` package.
|
|||
|
||||
.. _`IdlcGenerate`:
|
||||
|
||||
The :code:`CycloneDDS` package provides the :code:`ddsc` library
|
||||
that contains the DDS API that the application needs. But apart
|
||||
from that, it also contains helper functionality
|
||||
(:code:`idlc_generate`) to generate library targets from IDL
|
||||
files. These library targets can be easily used when compiling
|
||||
an application that depends on a data type described
|
||||
in an IDL file.
|
||||
The :code:`CycloneDDS` package provides the :code:`ddsc` library that
|
||||
contains the DDS API that the application needs. It also provides a
|
||||
component "idlc" that provides helper functionality for generating
|
||||
library targets from IDL files (:code:`idlc_generate`). These library
|
||||
targets can be easily used when compiling an application that depends on
|
||||
a data type described in an IDL file.
|
||||
|
||||
Two applications will be created, :code:`HelloworldPublisher`
|
||||
and :code:`HelloworldSubscriber`. Both consist only out of one
|
||||
|
@ -241,7 +141,7 @@ Here, we can let CMake configure the build environment for
|
|||
us by typing:
|
||||
::
|
||||
|
||||
cmake ../
|
||||
cmake ..
|
||||
|
||||
.. note::
|
||||
CMake does a pretty good job at guessing which generator to use, but some
|
||||
|
|
|
@ -1110,21 +1110,3 @@ an endless loop.
|
|||
There is furthermore also a difference of interpretation of the meaning of the
|
||||
‘autodispose_unregistered_instances’ QoS on the writer. Eclipse Cyclone DDS aligns with
|
||||
OpenSplice.
|
||||
|
||||
|
||||
.. _`Compatibility issues with TwinOaks`:
|
||||
|
||||
Compatibility issues with TwinOaks
|
||||
----------------------------------
|
||||
|
||||
In the default configuration there should be no interoperability issues with TwinOaks CoreDX,
|
||||
although there is the aforementioned difference in interpretation of the meaning of the
|
||||
‘autodispose_unregistered_instances’ QoS on the writer.
|
||||
|
||||
Interoperability with very old versions of CoreDX may require setting:
|
||||
|
||||
+ ``Compatibility/ManySocketsMode``: *true*
|
||||
+ ``Compatibility/ExplicitlyPublishQosSetToDefault``: *true*
|
||||
|
||||
The exact version number of CoreDX starting with which these settings are no longer needed is
|
||||
unknown, but it has certainly not been needed for several years.
|
||||
|
|
|
@ -8,7 +8,7 @@ CycloneDDS configuration
|
|||
## //CycloneDDS/Domain
|
||||
Attributes: [Id](#cycloneddsdomainid)
|
||||
|
||||
Children: [Compatibility](#cycloneddsdomaincompatibility), [Discovery](#cycloneddsdomaindiscovery), [General](#cycloneddsdomaingeneral), [Internal](#cycloneddsdomaininternal), [Partitioning](#cycloneddsdomainpartitioning), [SSL](#cycloneddsdomainssl), [Sizing](#cycloneddsdomainsizing), [TCP](#cycloneddsdomaintcp), [ThreadPool](#cycloneddsdomainthreadpool), [Threads](#cycloneddsdomainthreads), [Tracing](#cycloneddsdomaintracing)
|
||||
Children: [Compatibility](#cycloneddsdomaincompatibility), [DDSSecurity](#cycloneddsdomainddssecurity), [Discovery](#cycloneddsdomaindiscovery), [General](#cycloneddsdomaingeneral), [Internal](#cycloneddsdomaininternal), [Partitioning](#cycloneddsdomainpartitioning), [SSL](#cycloneddsdomainssl), [Sizing](#cycloneddsdomainsizing), [TCP](#cycloneddsdomaintcp), [ThreadPool](#cycloneddsdomainthreadpool), [Threads](#cycloneddsdomainthreads), [Tracing](#cycloneddsdomaintracing)
|
||||
|
||||
|
||||
The General element specifying Domain related settings.
|
||||
|
@ -100,8 +100,354 @@ The default setting is "lax".
|
|||
The default value is: "lax".
|
||||
|
||||
|
||||
### //CycloneDDS/Domain/DDSSecurity
|
||||
Children: [AccessControl](#cycloneddsdomainddssecurityaccesscontrol), [Authentication](#cycloneddsdomainddssecurityauthentication), [Cryptographic](#cycloneddsdomainddssecuritycryptographic)
|
||||
|
||||
|
||||
This element is used to configure Cyclone DDS with the DDS Security
|
||||
specification plugins and settings.
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/DDSSecurity/AccessControl
|
||||
Children: [Governance](#cycloneddsdomainddssecurityaccesscontrolgovernance), [Library](#cycloneddsdomainddssecurityaccesscontrollibrary), [Permissions](#cycloneddsdomainddssecurityaccesscontrolpermissions), [PermissionsCA](#cycloneddsdomainddssecurityaccesscontrolpermissionsca)
|
||||
|
||||
|
||||
This element configures the Access Control plugin of the DDS Security
|
||||
specification.
|
||||
|
||||
|
||||
##### //CycloneDDS/Domain/DDSSecurity/AccessControl/Governance
|
||||
|
||||
RELOFF (cfg.access_control_properties.governance), pf_string, BLURB("
|
||||
|
||||
URI to the shared Governance Document signed by the Permissions CA in
|
||||
S/MIME format
|
||||
|
||||
URI schemes: file, data<br>
|
||||
|
||||
Examples file URIs:
|
||||
|
||||
<Governance>file:governance.smime</Governance>
|
||||
|
||||
<Governance>file:/home/myuser/governance.smime</Governance><br>
|
||||
|
||||
<Governance><![CDATA[data:,MIME-Version: 1.0
|
||||
|
||||
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature";
|
||||
micalg="sha-256"; boundary="----F9A8A198D6F08E1285A292ADF14DD04F"
|
||||
|
||||
This is an S/MIME signed message
|
||||
|
||||
------F9A8A198D6F08E1285A292ADF14DD04F
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
|
||||
xsi:noNamespaceSchemaLocation="omg_shared_ca_governance.xsd">
|
||||
|
||||
<domain_access_rules>
|
||||
|
||||
. . .
|
||||
|
||||
</domain_access_rules>
|
||||
|
||||
</dds>
|
||||
|
||||
...
|
||||
|
||||
------F9A8A198D6F08E1285A292ADF14DD04F
|
||||
|
||||
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
|
||||
|
||||
Content-Transfer-Encoding: base64
|
||||
|
||||
Content-Disposition: attachment; filename="smime.p7s"
|
||||
|
||||
MIIDuAYJKoZIhv ...al5s=
|
||||
|
||||
------F9A8A198D6F08E1285A292ADF14DD04F-]]</Governance>
|
||||
|
||||
|
||||
##### //CycloneDDS/Domain/DDSSecurity/AccessControl/Library
|
||||
Children: [finalizeFunction](#cycloneddsdomainddssecurityaccesscontrollibraryfinalizefunction), [initFunction](#cycloneddsdomainddssecurityaccesscontrollibraryinitfunction), [path](#cycloneddsdomainddssecurityaccesscontrollibrarypath)
|
||||
|
||||
|
||||
RELOFF (cfg.access_control_plugin), pf_string, BLURB("
|
||||
|
||||
This element specifies the library to be loaded as the DDS Security
|
||||
Access Control plugin.
|
||||
|
||||
|
||||
###### //CycloneDDS/Domain/DDSSecurity/AccessControl/Library/finalizeFunction
|
||||
|
||||
RELOFF (cfg.access_control_plugin.library_finalize), pf_string, BLURB("
|
||||
|
||||
This element names the finalization function of Access Control plugin.
|
||||
This function is called to let the plugin release its resources.
|
||||
|
||||
|
||||
###### //CycloneDDS/Domain/DDSSecurity/AccessControl/Library/initFunction
|
||||
|
||||
RELOFF (cfg.access_control_plugin.library_init), pf_string, BLURB("
|
||||
|
||||
This element names the initialization function of Access Control plugin.
|
||||
This function is called after loading the plugin library for
|
||||
instantiation purposes. Init function must return an object that
|
||||
implements DDS Security Access Control interface.
|
||||
|
||||
|
||||
###### //CycloneDDS/Domain/DDSSecurity/AccessControl/Library/path
|
||||
|
||||
RELOFF (cfg.access_control_plugin.library_path), pf_string, BLURB("
|
||||
|
||||
This element points to the path of Access Control plugin library.
|
||||
|
||||
It can be either absolute path excluding file extension (
|
||||
/usr/lib/dds_security_ac ) or single file without extension (
|
||||
dds_security_ac ).
|
||||
|
||||
If single file is supplied, the library located by way of the current
|
||||
working directory, or LD_LIBRARY_PATH for Unix systems, and PATH for
|
||||
Windows systems.
|
||||
|
||||
|
||||
##### //CycloneDDS/Domain/DDSSecurity/AccessControl/Permissions
|
||||
|
||||
RELOFF (cfg.access_control_properties.permissions), pf_string, BLURB("
|
||||
|
||||
URI to the DomainParticipant permissions document signed by the
|
||||
Permissions CA in S/MIME format
|
||||
|
||||
The permissions document specifies the permissions to be applied to a
|
||||
domain.<br>
|
||||
|
||||
Example file URIs:
|
||||
|
||||
<Permissions>file:permissions_document.p7s</Permissions>
|
||||
|
||||
<Permissions>file:/path_to/permissions_document.p7s</Permissions>
|
||||
|
||||
Example data URI:
|
||||
|
||||
<Permissions><![CDATA[data:,.........]]</Permissions>
|
||||
|
||||
|
||||
##### //CycloneDDS/Domain/DDSSecurity/AccessControl/PermissionsCA
|
||||
|
||||
RELOFF (cfg.access_control_properties.permissions_ca), pf_string, BLURB("
|
||||
|
||||
URI to a X509 certificate for the PermissionsCA in PEM format.
|
||||
|
||||
Supported URI schemes: file, data
|
||||
|
||||
The file and data schemas shall refer to a X.509 v3 certificate (see
|
||||
X.509 v3 ITU-T Recommendation X.509 (2005) [39]) in PEM format.<br>
|
||||
|
||||
Examples:<br>
|
||||
|
||||
<PermissionsCA>file:permissions_ca.pem</PermissionsCA>
|
||||
|
||||
<PermissionsCA>file:/home/myuser/permissions_ca.pem</PermissionsCA><br>
|
||||
|
||||
<PermissionsCA>data:<strong>,</strong>-----BEGIN CERTIFICATE-----
|
||||
|
||||
MIIC3DCCAcQCCQCWE5x+Z ... PhovK0mp2ohhRLYI0ZiyYQ==
|
||||
|
||||
-----END CERTIFICATE-----</PermissionsCA>
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/DDSSecurity/Authentication
|
||||
Children: [IdentityCA](#cycloneddsdomainddssecurityauthenticationidentityca), [IdentityCertificate](#cycloneddsdomainddssecurityauthenticationidentitycertificate), [Library](#cycloneddsdomainddssecurityauthenticationlibrary), [Password](#cycloneddsdomainddssecurityauthenticationpassword), [PrivateKey](#cycloneddsdomainddssecurityauthenticationprivatekey), [TrustedCADirectory](#cycloneddsdomainddssecurityauthenticationtrustedcadirectory)
|
||||
|
||||
|
||||
This element configures the Authentication plugin of the DDS Security
|
||||
specification.
|
||||
|
||||
|
||||
##### //CycloneDDS/Domain/DDSSecurity/Authentication/IdentityCA
|
||||
|
||||
RELOFF (cfg.authentication_properties.identity_ca), pf_string, BLURB("
|
||||
|
||||
URI to the X509 certificate [39] of the Identity CA that is the signer of
|
||||
Identity Certificate.
|
||||
|
||||
Supported URI schemes: file, data
|
||||
|
||||
The file and data schemas shall refer to a X.509 v3 certificate (see
|
||||
X.509 v3 ITU-T Recommendation X.509 (2005) [39]) in PEM format.
|
||||
|
||||
Examples:
|
||||
|
||||
<IdentityCA>file:identity_ca.pem</IdentityCA>
|
||||
|
||||
<IdentityCA>data:,-----BEGIN CERTIFICATE-----<br>
|
||||
|
||||
MIIC3DCCAcQCCQCWE5x+Z...PhovK0mp2ohhRLYI0ZiyYQ==<br>
|
||||
|
||||
-----END CERTIFICATE-----</IdentityCA>
|
||||
|
||||
|
||||
##### //CycloneDDS/Domain/DDSSecurity/Authentication/IdentityCertificate
|
||||
|
||||
RELOFF (cfg.authentication_properties.identity_certificate), pf_string,
|
||||
BLURB("
|
||||
|
||||
Identity certificate that will be used for identifying all participants
|
||||
in the OSPL instance.<br>The content is URI to a X509 certificate signed
|
||||
by the IdentityCA in PEM format containing the signed public key.
|
||||
|
||||
Supported URI schemes: file, data
|
||||
|
||||
Examples:
|
||||
|
||||
<IdentityCertificate>file:participant1_identity_cert.pem</IdentityCertificate>
|
||||
|
||||
<IdentityCertificate>data:,-----BEGIN CERTIFICATE-----<br>
|
||||
|
||||
MIIDjjCCAnYCCQDCEu9...6rmT87dhTo=<br>
|
||||
|
||||
-----END CERTIFICATE-----</IdentityCertificate>
|
||||
|
||||
|
||||
##### //CycloneDDS/Domain/DDSSecurity/Authentication/Library
|
||||
Children: [finalizeFunction](#cycloneddsdomainddssecurityauthenticationlibraryfinalizefunction), [initFunction](#cycloneddsdomainddssecurityauthenticationlibraryinitfunction), [path](#cycloneddsdomainddssecurityauthenticationlibrarypath)
|
||||
|
||||
|
||||
RELOFF (cfg.authentication_plugin), pf_string, BLURB("
|
||||
|
||||
This element specifies the library to be loaded as the DDS Security
|
||||
Access Control plugin.
|
||||
|
||||
|
||||
###### //CycloneDDS/Domain/DDSSecurity/Authentication/Library/finalizeFunction
|
||||
|
||||
RELOFF (cfg.authentication_plugin.library_finalize), pf_string, BLURB("
|
||||
|
||||
This element names the finalization function of Authentication plugin.
|
||||
This function is called to let the plugin release its resources.
|
||||
|
||||
|
||||
###### //CycloneDDS/Domain/DDSSecurity/Authentication/Library/initFunction
|
||||
|
||||
RELOFF (cfg.authentication_plugin.library_init), pf_string, BLURB("
|
||||
|
||||
This element names the initialization function of Authentication plugin.
|
||||
This function is called after loading the plugin library for
|
||||
instantiation purposes. Init function must return an object that
|
||||
implements DDS Security Authentication interface.
|
||||
|
||||
|
||||
###### //CycloneDDS/Domain/DDSSecurity/Authentication/Library/path
|
||||
|
||||
RELOFF (cfg.authentication_plugin.library_path), pf_string, BLURB("
|
||||
|
||||
This element points to the path of Authentication plugin library.
|
||||
|
||||
It can be either absolute path excluding file extension (
|
||||
/usr/lib/dds_security_auth ) or single file without extension (
|
||||
dds_security_auth ).
|
||||
|
||||
If single file is supplied, the library located by way of the current
|
||||
working directory, or LD_LIBRARY_PATH for Unix systems, and PATH for
|
||||
Windows systems.
|
||||
|
||||
|
||||
##### //CycloneDDS/Domain/DDSSecurity/Authentication/Password
|
||||
|
||||
RELOFF (cfg.authentication_properties.password), pf_string, BLURB("
|
||||
|
||||
A password used to decrypt the private_key.
|
||||
|
||||
The value of the password property shall be interpreted as the Base64
|
||||
encoding of the AES-128 key that shall be used to decrypt the private_key
|
||||
using AES128-CBC.
|
||||
|
||||
If the password property is not present, then the value supplied in the
|
||||
private_key property must contain the unencrypted private key.
|
||||
|
||||
|
||||
##### //CycloneDDS/Domain/DDSSecurity/Authentication/PrivateKey
|
||||
|
||||
RELOFF (cfg.authentication_properties.private_key), pf_string, BLURB("
|
||||
|
||||
URI to access the private Private Key for all of the participants in the
|
||||
OSPL federation.
|
||||
|
||||
Supported URI schemes: file, data
|
||||
|
||||
Examples:
|
||||
|
||||
<PrivateKey>file:identity_ca_private_key.pem</PrivateKey>
|
||||
|
||||
<PrivateKey>data:,-----BEGIN RSA PRIVATE KEY-----<br>
|
||||
|
||||
MIIEpAIBAAKCAQEA3HIh...AOBaaqSV37XBUJg==<br>
|
||||
|
||||
-----END RSA PRIVATE KEY-----</PrivateKey>
|
||||
|
||||
|
||||
##### //CycloneDDS/Domain/DDSSecurity/Authentication/TrustedCADirectory
|
||||
|
||||
RELOFF (cfg.authentication_properties.trusted_ca_dir), pf_string, BLURB("
|
||||
|
||||
Trusted CA Directory which contains trusted CA certificates as separated
|
||||
files.
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/DDSSecurity/Cryptographic
|
||||
Children: [Library](#cycloneddsdomainddssecuritycryptographiclibrary)
|
||||
|
||||
|
||||
This element configures the Cryptographic plugin of the DDS Security
|
||||
specification.
|
||||
|
||||
|
||||
##### //CycloneDDS/Domain/DDSSecurity/Cryptographic/Library
|
||||
Children: [finalizeFunction](#cycloneddsdomainddssecuritycryptographiclibraryfinalizefunction), [initFunction](#cycloneddsdomainddssecuritycryptographiclibraryinitfunction), [path](#cycloneddsdomainddssecuritycryptographiclibrarypath)
|
||||
|
||||
|
||||
RELOFF (cfg.cryptography_plugin), pf_string, BLURB("
|
||||
|
||||
This element specifies the library to be loaded as the DDS Security
|
||||
Cryptographic plugin.
|
||||
|
||||
|
||||
###### //CycloneDDS/Domain/DDSSecurity/Cryptographic/Library/finalizeFunction
|
||||
|
||||
RELOFF (cfg.cryptography_plugin.library_finalize), pf_string, BLURB("
|
||||
|
||||
This element names the finalization function of Cryptographic plugin.
|
||||
This function is called to let the plugin release its resources.
|
||||
|
||||
|
||||
###### //CycloneDDS/Domain/DDSSecurity/Cryptographic/Library/initFunction
|
||||
|
||||
RELOFF (cfg.cryptography_plugin.library_init), pf_string, BLURB("
|
||||
|
||||
This element names the initialization function of Cryptographic plugin.
|
||||
This function is called after loading the plugin library for
|
||||
instantiation purposes. Init function must return an object that
|
||||
implements DDS Security Cryptographic interface.
|
||||
|
||||
|
||||
###### //CycloneDDS/Domain/DDSSecurity/Cryptographic/Library/path
|
||||
|
||||
RELOFF (cfg.cryptography_plugin.library_path), pf_string, BLURB("
|
||||
|
||||
This element points to the path of Cryptographic plugin library.
|
||||
|
||||
It can be either absolute path excluding file extension (
|
||||
/usr/lib/dds_security_crypto ) or single file without extension (
|
||||
dds_security_crypto ).
|
||||
|
||||
If single file is supplied, the library located by way of the current
|
||||
working directory, or LD_LIBRARY_PATH for Unix systems, and PATH for
|
||||
Windows systems.
|
||||
|
||||
|
||||
### //CycloneDDS/Domain/Discovery
|
||||
Children: [DSGracePeriod](#cycloneddsdomaindiscoverydsgraceperiod), [DefaultMulticastAddress](#cycloneddsdomaindiscoverydefaultmulticastaddress), [EnableTopicDiscovery](#cycloneddsdomaindiscoveryenabletopicdiscovery), [MaxAutoParticipantIndex](#cycloneddsdomaindiscoverymaxautoparticipantindex), [ParticipantIndex](#cycloneddsdomaindiscoveryparticipantindex), [Peers](#cycloneddsdomaindiscoverypeers), [Ports](#cycloneddsdomaindiscoveryports), [SPDPInterval](#cycloneddsdomaindiscoveryspdpinterval), [SPDPMulticastAddress](#cycloneddsdomaindiscoveryspdpmulticastaddress)
|
||||
Children: [DSGracePeriod](#cycloneddsdomaindiscoverydsgraceperiod), [DefaultMulticastAddress](#cycloneddsdomaindiscoverydefaultmulticastaddress), [EnableTopicDiscovery](#cycloneddsdomaindiscoveryenabletopicdiscovery), [ExternalDomainId](#cycloneddsdomaindiscoveryexternaldomainid), [MaxAutoParticipantIndex](#cycloneddsdomaindiscoverymaxautoparticipantindex), [ParticipantIndex](#cycloneddsdomaindiscoveryparticipantindex), [Peers](#cycloneddsdomaindiscoverypeers), [Ports](#cycloneddsdomaindiscoveryports), [SPDPInterval](#cycloneddsdomaindiscoveryspdpinterval), [SPDPMulticastAddress](#cycloneddsdomaindiscoveryspdpmulticastaddress), [Tag](#cycloneddsdomaindiscoverytag)
|
||||
|
||||
|
||||
The Discovery element allows specifying various parameters related to the
|
||||
|
@ -140,6 +486,17 @@ Do not use.
|
|||
The default value is: "true".
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/Discovery/ExternalDomainId
|
||||
Text
|
||||
|
||||
An override for the domain id, to be used in discovery and for
|
||||
determining the port number mapping. This allows creating multiple
|
||||
domains in a single process while making them appear as a single domain
|
||||
on the network. The value "default" disables the override.
|
||||
|
||||
The default value is: "default".
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/Discovery/MaxAutoParticipantIndex
|
||||
Integer
|
||||
|
||||
|
@ -261,7 +618,7 @@ The default value is: "250".
|
|||
##### //CycloneDDS/Domain/Discovery/Ports/MulticastDataOffset
|
||||
Integer
|
||||
|
||||
This element specifies the port number for multicast meta traffic (refer
|
||||
This element specifies the port number for multicast data traffic (refer
|
||||
to the DDSI 2.1 specification, section 9.6.1, constant d2).
|
||||
|
||||
The default value is: "1".
|
||||
|
@ -289,7 +646,7 @@ The default value is: "2".
|
|||
##### //CycloneDDS/Domain/Discovery/Ports/UnicastDataOffset
|
||||
Integer
|
||||
|
||||
This element specifies the port number for unicast meta traffic (refer to
|
||||
This element specifies the port number for unicast data traffic (refer to
|
||||
the DDSI 2.1 specification, section 9.6.1, constant d3).
|
||||
|
||||
The default value is: "11".
|
||||
|
@ -328,6 +685,15 @@ address.
|
|||
The default value is: "239.255.0.1".
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/Discovery/Tag
|
||||
Text
|
||||
|
||||
String extension for domain id that remote participants must match to be
|
||||
discovered.
|
||||
|
||||
The default value is: "".
|
||||
|
||||
|
||||
### //CycloneDDS/Domain/General
|
||||
Children: [AllowMulticast](#cycloneddsdomaingeneralallowmulticast), [DontRoute](#cycloneddsdomaingeneraldontroute), [EnableMulticastLoopback](#cycloneddsdomaingeneralenablemulticastloopback), [ExternalNetworkAddress](#cycloneddsdomaingeneralexternalnetworkaddress), [ExternalNetworkMask](#cycloneddsdomaingeneralexternalnetworkmask), [FragmentSize](#cycloneddsdomaingeneralfragmentsize), [MaxMessageSize](#cycloneddsdomaingeneralmaxmessagesize), [MulticastRecvNetworkInterfaceAddresses](#cycloneddsdomaingeneralmulticastrecvnetworkinterfaceaddresses), [MulticastTimeToLive](#cycloneddsdomaingeneralmulticasttimetolive), [NetworkInterfaceAddress](#cycloneddsdomaingeneralnetworkinterfaceaddress), [PreferMulticast](#cycloneddsdomaingeneralprefermulticast), [Transport](#cycloneddsdomaingeneraltransport), [UseIPv6](#cycloneddsdomaingeneraluseipv6)
|
||||
|
||||
|
@ -672,6 +1038,8 @@ The default value is: "false".
|
|||
|
||||
|
||||
#### //CycloneDDS/Domain/Internal/HeartbeatInterval
|
||||
Attributes: [max](#cycloneddsdomaininternalheartbeatintervalmax), [min](#cycloneddsdomaininternalheartbeatintervalmin), [minsched](#cycloneddsdomaininternalheartbeatintervalminsched)
|
||||
|
||||
Number-with-unit
|
||||
|
||||
This elemnents allows configuring the base interval for sending writer
|
||||
|
@ -683,6 +1051,42 @@ Valid values are finite durations with an explicit unit or the keyword
|
|||
The default value is: "100 ms".
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/Internal/HeartbeatInterval[@max]
|
||||
Number-with-unit
|
||||
|
||||
This attribute sets the maximum interval for periodic heartbeats.
|
||||
|
||||
Valid values are finite durations with an explicit unit or the keyword
|
||||
'inf' for infinity. Recognised units: ns, us, ms, s, min, hr, day.
|
||||
|
||||
The default value is: "8 s".
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/Internal/HeartbeatInterval[@min]
|
||||
Number-with-unit
|
||||
|
||||
This attribute sets the minimum interval that must have passed since the
|
||||
most recent heartbeat from a writer, before another asynchronous (not
|
||||
directly related to writing) will be sent.
|
||||
|
||||
Valid values are finite durations with an explicit unit or the keyword
|
||||
'inf' for infinity. Recognised units: ns, us, ms, s, min, hr, day.
|
||||
|
||||
The default value is: "5 ms".
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/Internal/HeartbeatInterval[@minsched]
|
||||
Number-with-unit
|
||||
|
||||
This attribute sets the minimum interval for periodic heartbeats. Other
|
||||
events may still cause heartbeats to go out.
|
||||
|
||||
Valid values are finite durations with an explicit unit or the keyword
|
||||
'inf' for infinity. Recognised units: ns, us, ms, s, min, hr, day.
|
||||
|
||||
The default value is: "20 ms".
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/Internal/LateAckMode
|
||||
Boolean
|
||||
|
||||
|
@ -704,6 +1108,8 @@ The default value is: "10 s".
|
|||
|
||||
|
||||
#### //CycloneDDS/Domain/Internal/LivelinessMonitoring
|
||||
Attributes: [Interval](#cycloneddsdomaininternallivelinessmonitoringinterval), [StackTraces](#cycloneddsdomaininternallivelinessmonitoringstacktraces)
|
||||
|
||||
Boolean
|
||||
|
||||
This element controls whether or not implementation should internally
|
||||
|
@ -714,6 +1120,28 @@ stopped making progress.
|
|||
The default value is: "false".
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/Internal/LivelinessMonitoring[@Interval]
|
||||
Number-with-unit
|
||||
|
||||
This element controls the interval at which to check whether threads have
|
||||
been making progress.
|
||||
|
||||
The unit must be specified explicitly. Recognised units: ns, us, ms, s,
|
||||
min, hr, day.
|
||||
|
||||
The default value is: "1s".
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/Internal/LivelinessMonitoring[@StackTraces]
|
||||
Boolean
|
||||
|
||||
This element controls whether or not to write stack traces to the Cyclone
|
||||
DDS trace when a thread fails to make progress (on select platforms
|
||||
only).
|
||||
|
||||
The default value is: "true".
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/Internal/MaxParticipants
|
||||
Integer
|
||||
|
||||
|
@ -819,6 +1247,8 @@ The default value is: "-1".
|
|||
|
||||
|
||||
#### //CycloneDDS/Domain/Internal/MultipleReceiveThreads
|
||||
Attributes: [maxretries](#cycloneddsdomaininternalmultiplereceivethreadsmaxretries)
|
||||
|
||||
Boolean
|
||||
|
||||
This element controls whether all traffic is handled by a single receive
|
||||
|
@ -830,6 +1260,18 @@ single (the default).
|
|||
The default value is: "true".
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/Internal/MultipleReceiveThreads[@maxretries]
|
||||
Integer
|
||||
|
||||
Receive threads dedicated to a single socket can only be triggered for
|
||||
termination by sending a packet. Reception of any packet will do, so
|
||||
termination failure due to packet loss is exceedingly unlikely, but to
|
||||
eliminate all risks, it will retry as many times as specified by this
|
||||
attribute before aborting.
|
||||
|
||||
The default value is: "4294967295".
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/Internal/NackDelay
|
||||
Number-with-unit
|
||||
|
||||
|
@ -880,6 +1322,8 @@ The default value is: "true".
|
|||
|
||||
|
||||
#### //CycloneDDS/Domain/Internal/RediscoveryBlacklistDuration
|
||||
Attributes: [enforce](#cycloneddsdomaininternalrediscoveryblacklistdurationenforce)
|
||||
|
||||
Number-with-unit
|
||||
|
||||
This element controls for how long a remote participant that was
|
||||
|
@ -898,6 +1342,18 @@ Valid values are finite durations with an explicit unit or the keyword
|
|||
The default value is: "10s".
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/Internal/RediscoveryBlacklistDuration[@enforce]
|
||||
Boolean
|
||||
|
||||
This attribute controls whether the configured time during which recently
|
||||
deleted participants will not be rediscovered (i.e., "black listed") is
|
||||
enforced and following complete removal of the participant in Cyclone
|
||||
DDS, or whether it can be rediscovered earlier provided all traces of
|
||||
that participant have been removed already.
|
||||
|
||||
The default value is: "false".
|
||||
|
||||
|
||||
#### //CycloneDDS/Domain/Internal/RetransmitMerging
|
||||
One of: never, adaptive, always
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue