Exclude network channels from documentation

They are not supported yet.

Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
Erik Boasson 2019-10-03 13:40:27 +02:00 committed by eboasson
parent d429045255
commit a25b69be7d
4 changed files with 68 additions and 410 deletions

View file

@ -5,13 +5,14 @@ if 0;
use strict; use strict;
use Data::Dumper; use Data::Dumper;
if (@ARGV != 2) { if (@ARGV != 3) {
print STDERR "usage: $0 input output_basename\n"; print STDERR "usage: $0 input output.md output.rnc\n";
exit 2; exit 2;
} }
my $input = $ARGV[0]; my $input = $ARGV[0];
my $output = $ARGV[1]; my $output_md = $ARGV[1];
my $output_rnc = $ARGV[2];
# This "perl" script extracts the configuration elements and their types and descriptions # This "perl" script extracts the configuration elements and their types and descriptions
# from the source and generates a RELAX NG Compact Form (RNC) and a MarkDown version of # from the source and generates a RELAX NG Compact Form (RNC) and a MarkDown version of
@ -31,6 +32,13 @@ my $output = $ARGV[1];
# - knowledge of conversion functions in here # - knowledge of conversion functions in here
# - hard definitions of enums in here # - hard definitions of enums in here
# - some other hard-coded knowledge of the top level nodes # - some other hard-coded knowledge of the top level nodes
#
# INCANTATION
#
# trang is a tool for converting (among other things) RNC to XSD
#
# perl -w ../docs/makernc.pl ../src/core/ddsi/src/q_config.c ../docs/manual/options.md ../etc/cyclonedds.rnc \
# && java -jar trang-20091111/trang.jar -I rnc -O xsd ../etc/cyclonedds.rnc ../etc/cyclonedds.xsd
$|=1; $|=1;
my $debug = 0; my $debug = 0;
@ -140,14 +148,15 @@ while (my ($k, $v) = each %typehint2xmltype) {
die "script error: values of enum type $k unknown\n" if $v eq "Enum" && $enum_values{$k} eq ""; die "script error: values of enum type $k unknown\n" if $v eq "Enum" && $enum_values{$k} eq "";
} }
my %tab2elems;
my %elem; my %elem;
my %typehint_seen; my %typehint_seen;
my %tables;
my @root = read_config ($input); my @root = read_config ($input);
{ {
open my $fh, ">", "${output}.rnc" or die "can't open ${output}.rnc"; open my $fh, ">", "$output_rnc" or die "can't open $output_rnc";
print $fh "namespace a = \"http://relaxng.org/ns/compatibility/annotations/1.0\"\n"; print $fh "namespace a = \"http://relaxng.org/ns/compatibility/annotations/1.0\"\n";
print $fh "grammar {\n"; print $fh "grammar {\n";
print $fh " start =\n"; print $fh " start =\n";
@ -161,7 +170,7 @@ my @root = read_config ($input);
} }
{ {
open my $fh, ">", "${output}.md" or die "can't open ${output}.md"; open my $fh, ">", "$output_md" or die "can't open $output_md";
my $sep_blurb = ""; my $sep_blurb = "";
conv_table($fh, \&conv_to_md, \@root, "/", " ", "", \$sep_blurb); conv_table($fh, \&conv_to_md, \@root, "/", " ", "", \$sep_blurb);
close $fh; close $fh;
@ -216,7 +225,6 @@ sub store_entry {
$name =~ s/\|.*//; # aliases are not visible in osplconf $name =~ s/\|.*//; # aliases are not visible in osplconf
my $ltable = lc $table; my $ltable = lc $table;
my $lname = lc $name; my $lname = lc $name;
push @{$tab2elems{$ltable}}, $name;
die "error: no mapping defined for type $typehint\n" if $typehint2xmltype{$typehint} eq ""; die "error: no mapping defined for type $typehint\n" if $typehint2xmltype{$typehint} eq "";
my $ub = exists $typehint2unit{$typehint} && exists $unit_blurb{$typehint2unit{$typehint}} ? $unit_blurb{$typehint2unit{$typehint}} : ""; my $ub = exists $typehint2unit{$typehint} && exists $unit_blurb{$typehint2unit{$typehint}} ? $unit_blurb{$typehint2unit{$typehint}} : "";
if ($kind eq "GROUP" || $kind eq "MGROUP") { if ($kind eq "GROUP" || $kind eq "MGROUP") {
@ -250,15 +258,15 @@ sub store_entry {
my $desc = clean_description($description).$ub; my $desc = clean_description($description).$ub;
$desc .= "<p>The default value is: &quot;$defaultvalue&quot;.</p>" if defined $defaultvalue; $desc .= "<p>The default value is: &quot;$defaultvalue&quot;.</p>" if defined $defaultvalue;
$elem{"$ltable/$lname"} = { kind => $kind, kstr => $kstr, my $fs;
subtables => $subtables, multiplicity => $multiplicity, push @{$tables{$table}}, { table => $table, name => $name,
min_occ => $min_occ, max_occ => $max_occ, root => 0, kind => $kind, kstr => $kstr,
defaultvalue => $defaultvalue, typehint => $typehint, subtables => $subtables, multiplicity => $multiplicity,
description => $desc }; min_occ => $min_occ, max_occ => $max_occ, root => 0,
defaultvalue => $defaultvalue, typehint => $typehint,
description => $desc };
# typehint_seen is for verifying no bogus type hints are defined in this script # typehint_seen is for verifying no bogus type hints are defined in this script
$typehint_seen{$typehint} = 1; $typehint_seen{$typehint} = 1;
#printf "%s - $s\n", "$ltable/$lname", $elem{"$ltable/lname"};
#$typehint = "";
} }
sub fmtblurb { sub fmtblurb {
@ -449,38 +457,55 @@ sub conv_to_md {
} }
sub conv_table { sub conv_table {
my ($fh, $convsub, $tablesref, $fqname, $indent, $prefix, $closure) = @_; my ($fh, $convsub, $tablenames, $fqname, $indent, $prefix, $closure) = @_;
my (@ts, @ns);
for (@$tablesref) {
next unless exists $tab2elems{$_};
for (my $i = 0; $i < @{$tab2elems{$_}}; $i++) {
push @ts, $_;
}
push @ns, sort @{$tab2elems{$_}};
}
my $elems = 0; my $elems = 0;
for (my $i = 0; $i < @ns; $i++) { for (@$tablenames) {
my $fs = $elem{lc "$ts[$i]/$ns[$i]"}; next unless exists $tables{$_};
my $fqname1; for my $fs (sort { $a->{name} cmp $b->{name} } @{$tables{$_}}) {
if ($fs->{kind} eq "ATTR") { my $fqname1;
die unless $elems == 0; if ($fs->{kind} eq "ATTR") {
$fqname1 = "${fqname}[\@$ns[$i]]"; die unless $elems == 0;
} else { $fqname1 = "${fqname}[\@$fs->{name}]";
$fqname1 = "$fqname/$ns[$i]"; } else {
$elems++; $fqname1 = "$fqname/$fs->{name}";
$elems++;
}
my $prefix1 = ($fs->{table} eq "unsupp_cfgelems") ? "<b>Internal</b>" : $prefix;
&$convsub ($fh, $fs, $fs->{name}, $fqname1, $indent, $prefix1, $closure);
} }
&$convsub ($fh, $fs, $ns[$i], $fqname1, $indent, ($ts[$i] eq "unsupp_cfgelems") ? "<b>Internal</b>" : $prefix, $closure);
} }
} }
sub read_config { sub read_config {
my %incl = (# included options
'DDSI_INCLUDE_SSL' => 1,
'DDSI_INCLUDE_NETWORK_PARTITIONS' => 1,
'DDSI_INCLUDE_SSM' => 1,
# excluded options
'DDSI_INCLUDE_NETWORK_CHANNELS' => 0,
'DDSI_INCLUDE_BANDWIDTH_LIMITING' => 0);
my ($input) = @_; my ($input) = @_;
my ($name, $table, $kind, @subtables, $multiplicity, $defaultvalue, $typehint, $description); my ($name, $table, $kind, @subtables, $multiplicity, $defaultvalue, $typehint, $description);
my ($gobbling_description, $in_table, $rest, $deprecated); my ($gobbling_description, $in_table, $rest, $deprecated);
my @stk = (); # stack of conditional nesting, for each: copy/discard/ignore
open FH, "<", $input or die "can't open $input\n"; open FH, "<", $input or die "can't open $input\n";
while (<FH>) { while (<FH>) {
chomp; chomp;
# 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*)?$/) {
my $x = (not defined $1 || $1 eq "def") ? -1 : 1; my $var = $2;
die if $var =~ /^DDSI_INCLUDE_/ && !exists $incl{$var};
push @stk, (not defined $incl{$var}) ? 0 : $incl{$var} ? $x : -$x;
} elsif (/^\s*\#\s*if/) { # ignore any other conditional
push @stk, 0;
} elsif (/^\s*\#\s*else/) {
$stk[$#stk] = -$stk[$#stk];
} elsif (/^\s*\#\s*endif/) {
pop @stk;
}
next if grep {$_ < 0} @stk;
if ($gobbling_description) { if ($gobbling_description) {
$description .= $_; $description .= $_;
#print " .. $_\n"; #print " .. $_\n";
@ -489,7 +514,8 @@ sub read_config {
if ($gobbling_description && /(^|")(\s*\)) *\} *, *$/) { if ($gobbling_description && /(^|")(\s*\)) *\} *, *$/) {
$gobbling_description = 0; $gobbling_description = 0;
my @st = @subtables; my @st = @subtables;
store_entry ($name, $table, $kind, \@st, $multiplicity, $defaultvalue, $typehint, $description) unless $deprecated; store_entry ($name, $table, $kind, \@st, $multiplicity, $defaultvalue, $typehint, $description)
unless $deprecated;
next; next;
} }
@ -624,7 +650,8 @@ sub read_config {
# description ending on same line # description ending on same line
$description = $1; $description = $1;
my @st = @subtables; my @st = @subtables;
store_entry ($name, $table, $kind, \@st, $multiplicity, $defaultvalue, $typehint, $description) unless $deprecated; store_entry ($name, $table, $kind, \@st, $multiplicity, $defaultvalue, $typehint, $description)
unless $deprecated;
} else { } else {
# strip the quotes &c. once the full text has been gathered # strip the quotes &c. once the full text has been gathered
$description = $rest; $description = $rest;
@ -636,11 +663,10 @@ sub read_config {
} }
close FH; close FH;
#print "$tab2elems{cyclonedds_root_cfgelems}\n"; my @roots = @{$tables{cyclonedds_root_cfgelems}};
my @rootnames = @{$tab2elems{cyclonedds_root_cfgelems}}; die "error: cyclonedds_root_cfgelems has no or multiple entries\n" if @roots != 1;
die "error: cyclonedds_root_cfgelems has no or multiple entries\n" if @rootnames != 1; die "error: root_cfgelems doesn't exist\n" unless exists $tables{root_cfgelems};
die "error: root_cfgelems doesn't exist\n" unless exists $tab2elems{root_cfgelems}; my $root = $roots[0];
my $root = $elem{lc "cyclonedds_root_cfgelems/$rootnames[0]"};
die "error: root_cfgelems doesn't exist\n" unless defined $root; die "error: root_cfgelems doesn't exist\n" unless defined $root;
$root->{min_occ} = $root->{max_occ} = $root->{isroot} = 1; $root->{min_occ} = $root->{max_occ} = $root->{isroot} = 1;
while (my ($k, $v) = each %typehint_seen) { while (my ($k, $v) = each %typehint_seen) {

View file

@ -8,7 +8,7 @@ CycloneDDS configuration
## //CycloneDDS/Domain ## //CycloneDDS/Domain
Attributes: [Id](#cycloneddsdomainid) Attributes: [Id](#cycloneddsdomainid)
Children: [Channels](#cycloneddsdomainchannels), [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), [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. The General element specifying Domain related settings.
@ -23,113 +23,6 @@ domain ids.
The default value is: "any". The default value is: "any".
### //CycloneDDS/Domain/Channels
Children: [Channel](#cycloneddsdomainchannelschannel)
This element is used to group a set of channels. The channels are
independent data paths through Cyclone DDS and by using separate threads
and setting their priorities appropriately, chanenls can be used to map
transport priorities to operating system scheduler priorities, ensuring
system-wide end-to-end priority preservation.
#### //CycloneDDS/Domain/Channels/Channel
Attributes: [Name](#cycloneddsdomainchannelschannelname), [TransportPriority](#cycloneddsdomainchannelschanneltransportpriority)
Children: [AuxiliaryBandwidthLimit](#cycloneddsdomainchannelschannelauxiliarybandwidthlimit), [DataBandwidthLimit](#cycloneddsdomainchannelschanneldatabandwidthlimit), [DiffServField](#cycloneddsdomainchannelschanneldiffservfield)
This element defines a channel.
#### //CycloneDDS/Domain/Channels/Channel[@Name]
Text
This attribute specifies name of this channel. The name should uniquely
identify the channel.
#### //CycloneDDS/Domain/Channels/Channel[@TransportPriority]
Integer
This attribute sets the transport priority threshold for the channel.
Each DCPS data writer has a "transport_priority" QoS and this QoS is used
to select a channel for use by this writer. The selected channel is the
one with the largest threshold not greater than the writer's transport
priority, and if no such channel exists, the channel with the lowest
threshold.
The default value is: "0".
##### //CycloneDDS/Domain/Channels/Channel/AuxiliaryBandwidthLimit
Number-with-unit
This element specifies the maximum transmit rate of auxiliary traffic on
this channel (e.g. retransmits, heartbeats, etc). Bandwidth limiting uses
a leaky bucket scheme. The default value "inf" means Cyclone DDS imposes
no limitation, the underlying operating system and hardware will likely
limit the maimum transmit rate.
The unit must be specified explicitly. Recognised units: Xb/s, Xbps for
bits/s or XB/s, XBps for bytes/s; where X is an optional prefix: k for
10^3, Ki for 2<sup>10</sup>, M for 10<sup>6</sup>, Mi for 2<sup>20</sup>,
G for 10<sup>9</sup>, Gi for 2<sup>30</sup>.
The default value is: "inf".
##### //CycloneDDS/Domain/Channels/Channel/DataBandwidthLimit
Number-with-unit
This element specifies the maximum transmit rate of new samples and
directly related data, for this channel. Bandwidth limiting uses a leaky
bucket scheme. The default value "inf" means Cyclone DDS imposes no
limitation, the underlying operating system and hardware will likely
limit the maimum transmit rate.
The unit must be specified explicitly. Recognised units: Xb/s, Xbps for
bits/s or XB/s, XBps for bytes/s; where X is an optional prefix: k for
10^3, Ki for 2<sup>10</sup>, M for 10<sup>6</sup>, Mi for 2<sup>20</sup>,
G for 10<sup>9</sup>, Gi for 2<sup>30</sup>.
The default value is: "inf".
##### //CycloneDDS/Domain/Channels/Channel/DiffServField
Integer
This element describes the DiffServ setting the channel will apply to the
networking messages. This parameter determines the value of the diffserv
field of the IP version 4 packets sent on this channel which allows QoS
setting to be applied to the network traffic send on this channel.<br/>
Windows platform support for setting the diffserv field is dependent on
the OS version.<br/>
For Windows versions XP SP2 and 2003 to use the diffserv field the
following parameter should be added to the register:<br/><br>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\DisableUserTOSSetting<br/><br/>
The type of this parameter is a DWORD and its value should be set to 0 to
allow setting of the diffserv field.<br/><br/>
For Windows version 7 or higher a new API (qWAVE) has been introduced.
For these platforms the specified diffserv value is mapped to one of the
support traffic types.
The mapping is as follows: 1-8 background traffic; 9-40 excellent
traffic; 41-55 audio/video traffic; 56 voice traffic; 57-63 control
traffic.
When an application is run without Administrative priveleges then only
the diffserv value of 0, 8, 40 or 56 is allowed.
The default value is: "0".
### //CycloneDDS/Domain/Compatibility ### //CycloneDDS/Domain/Compatibility
Children: [AssumeRtiHasPmdEndpoints](#cycloneddsdomaincompatibilityassumertihaspmdendpoints), [ExplicitlyPublishQosSetToDefault](#cycloneddsdomaincompatibilityexplicitlypublishqossettodefault), [ManySocketsMode](#cycloneddsdomaincompatibilitymanysocketsmode), [StandardsConformance](#cycloneddsdomaincompatibilitystandardsconformance) Children: [AssumeRtiHasPmdEndpoints](#cycloneddsdomaincompatibilityassumertihaspmdendpoints), [ExplicitlyPublishQosSetToDefault](#cycloneddsdomaincompatibilityexplicitlypublishqossettodefault), [ManySocketsMode](#cycloneddsdomaincompatibilitymanysocketsmode), [StandardsConformance](#cycloneddsdomaincompatibilitystandardsconformance)
@ -641,7 +534,7 @@ The default value is: "default".
### //CycloneDDS/Domain/Internal ### //CycloneDDS/Domain/Internal
Children: [AccelerateRexmitBlockSize](#cycloneddsdomaininternalacceleraterexmitblocksize), [AssumeMulticastCapable](#cycloneddsdomaininternalassumemulticastcapable), [AutoReschedNackDelay](#cycloneddsdomaininternalautoreschednackdelay), [AuxiliaryBandwidthLimit](#cycloneddsdomaininternalauxiliarybandwidthlimit), [BuiltinEndpointSet](#cycloneddsdomaininternalbuiltinendpointset), [ControlTopic](#cycloneddsdomaininternalcontroltopic), [DDSI2DirectMaxThreads](#cycloneddsdomaininternalddsi2directmaxthreads), [DefragReliableMaxSamples](#cycloneddsdomaininternaldefragreliablemaxsamples), [DefragUnreliableMaxSamples](#cycloneddsdomaininternaldefragunreliablemaxsamples), [DeliveryQueueMaxSamples](#cycloneddsdomaininternaldeliveryqueuemaxsamples), [EnableExpensiveChecks](#cycloneddsdomaininternalenableexpensivechecks), [GenerateKeyhash](#cycloneddsdomaininternalgeneratekeyhash), [HeartbeatInterval](#cycloneddsdomaininternalheartbeatinterval), [LateAckMode](#cycloneddsdomaininternallateackmode), [LeaseDuration](#cycloneddsdomaininternalleaseduration), [LivelinessMonitoring](#cycloneddsdomaininternallivelinessmonitoring), [MaxParticipants](#cycloneddsdomaininternalmaxparticipants), [MaxQueuedRexmitBytes](#cycloneddsdomaininternalmaxqueuedrexmitbytes), [MaxQueuedRexmitMessages](#cycloneddsdomaininternalmaxqueuedrexmitmessages), [MaxSampleSize](#cycloneddsdomaininternalmaxsamplesize), [MeasureHbToAckLatency](#cycloneddsdomaininternalmeasurehbtoacklatency), [MinimumSocketReceiveBufferSize](#cycloneddsdomaininternalminimumsocketreceivebuffersize), [MinimumSocketSendBufferSize](#cycloneddsdomaininternalminimumsocketsendbuffersize), [MonitorPort](#cycloneddsdomaininternalmonitorport), [MultipleReceiveThreads](#cycloneddsdomaininternalmultiplereceivethreads), [NackDelay](#cycloneddsdomaininternalnackdelay), [PreEmptiveAckDelay](#cycloneddsdomaininternalpreemptiveackdelay), [PrimaryReorderMaxSamples](#cycloneddsdomaininternalprimaryreordermaxsamples), [PrioritizeRetransmit](#cycloneddsdomaininternalprioritizeretransmit), [RediscoveryBlacklistDuration](#cycloneddsdomaininternalrediscoveryblacklistduration), [RetransmitMerging](#cycloneddsdomaininternalretransmitmerging), [RetransmitMergingPeriod](#cycloneddsdomaininternalretransmitmergingperiod), [RetryOnRejectBestEffort](#cycloneddsdomaininternalretryonrejectbesteffort), [SPDPResponseMaxDelay](#cycloneddsdomaininternalspdpresponsemaxdelay), [ScheduleTimeRounding](#cycloneddsdomaininternalscheduletimerounding), [SecondaryReorderMaxSamples](#cycloneddsdomaininternalsecondaryreordermaxsamples), [SendAsync](#cycloneddsdomaininternalsendasync), [SquashParticipants](#cycloneddsdomaininternalsquashparticipants), [SynchronousDeliveryLatencyBound](#cycloneddsdomaininternalsynchronousdeliverylatencybound), [SynchronousDeliveryPriorityThreshold](#cycloneddsdomaininternalsynchronousdeliveryprioritythreshold), [Test](#cycloneddsdomaininternaltest), [UnicastResponseToSPDPMessages](#cycloneddsdomaininternalunicastresponsetospdpmessages), [UseMulticastIfMreqn](#cycloneddsdomaininternalusemulticastifmreqn), [Watermarks](#cycloneddsdomaininternalwatermarks), [WriteBatch](#cycloneddsdomaininternalwritebatch), [WriterLingerDuration](#cycloneddsdomaininternalwriterlingerduration) Children: [AccelerateRexmitBlockSize](#cycloneddsdomaininternalacceleraterexmitblocksize), [AssumeMulticastCapable](#cycloneddsdomaininternalassumemulticastcapable), [AutoReschedNackDelay](#cycloneddsdomaininternalautoreschednackdelay), [BuiltinEndpointSet](#cycloneddsdomaininternalbuiltinendpointset), [ControlTopic](#cycloneddsdomaininternalcontroltopic), [DDSI2DirectMaxThreads](#cycloneddsdomaininternalddsi2directmaxthreads), [DefragReliableMaxSamples](#cycloneddsdomaininternaldefragreliablemaxsamples), [DefragUnreliableMaxSamples](#cycloneddsdomaininternaldefragunreliablemaxsamples), [DeliveryQueueMaxSamples](#cycloneddsdomaininternaldeliveryqueuemaxsamples), [EnableExpensiveChecks](#cycloneddsdomaininternalenableexpensivechecks), [GenerateKeyhash](#cycloneddsdomaininternalgeneratekeyhash), [HeartbeatInterval](#cycloneddsdomaininternalheartbeatinterval), [LateAckMode](#cycloneddsdomaininternallateackmode), [LeaseDuration](#cycloneddsdomaininternalleaseduration), [LivelinessMonitoring](#cycloneddsdomaininternallivelinessmonitoring), [MaxParticipants](#cycloneddsdomaininternalmaxparticipants), [MaxQueuedRexmitBytes](#cycloneddsdomaininternalmaxqueuedrexmitbytes), [MaxQueuedRexmitMessages](#cycloneddsdomaininternalmaxqueuedrexmitmessages), [MaxSampleSize](#cycloneddsdomaininternalmaxsamplesize), [MeasureHbToAckLatency](#cycloneddsdomaininternalmeasurehbtoacklatency), [MinimumSocketReceiveBufferSize](#cycloneddsdomaininternalminimumsocketreceivebuffersize), [MinimumSocketSendBufferSize](#cycloneddsdomaininternalminimumsocketsendbuffersize), [MonitorPort](#cycloneddsdomaininternalmonitorport), [MultipleReceiveThreads](#cycloneddsdomaininternalmultiplereceivethreads), [NackDelay](#cycloneddsdomaininternalnackdelay), [PreEmptiveAckDelay](#cycloneddsdomaininternalpreemptiveackdelay), [PrimaryReorderMaxSamples](#cycloneddsdomaininternalprimaryreordermaxsamples), [PrioritizeRetransmit](#cycloneddsdomaininternalprioritizeretransmit), [RediscoveryBlacklistDuration](#cycloneddsdomaininternalrediscoveryblacklistduration), [RetransmitMerging](#cycloneddsdomaininternalretransmitmerging), [RetransmitMergingPeriod](#cycloneddsdomaininternalretransmitmergingperiod), [RetryOnRejectBestEffort](#cycloneddsdomaininternalretryonrejectbesteffort), [SPDPResponseMaxDelay](#cycloneddsdomaininternalspdpresponsemaxdelay), [ScheduleTimeRounding](#cycloneddsdomaininternalscheduletimerounding), [SecondaryReorderMaxSamples](#cycloneddsdomaininternalsecondaryreordermaxsamples), [SendAsync](#cycloneddsdomaininternalsendasync), [SquashParticipants](#cycloneddsdomaininternalsquashparticipants), [SynchronousDeliveryLatencyBound](#cycloneddsdomaininternalsynchronousdeliverylatencybound), [SynchronousDeliveryPriorityThreshold](#cycloneddsdomaininternalsynchronousdeliveryprioritythreshold), [Test](#cycloneddsdomaininternaltest), [UnicastResponseToSPDPMessages](#cycloneddsdomaininternalunicastresponsetospdpmessages), [UseMulticastIfMreqn](#cycloneddsdomaininternalusemulticastifmreqn), [Watermarks](#cycloneddsdomaininternalwatermarks), [WriteBatch](#cycloneddsdomaininternalwritebatch), [WriterLingerDuration](#cycloneddsdomaininternalwriterlingerduration)
The Internal elements deal with a variety of settings that evolving and The Internal elements deal with a variety of settings that evolving and
@ -687,25 +580,6 @@ Valid values are finite durations with an explicit unit or the keyword
The default value is: "1 s". The default value is: "1 s".
#### //CycloneDDS/Domain/Internal/AuxiliaryBandwidthLimit
Number-with-unit
This element specifies the maximum transmit rate of auxiliary traffic not
bound to a specific channel, such as discovery traffic, as well as
auxiliary traffic related to a certain channel if that channel has
elected to share this global AuxiliaryBandwidthLimit. Bandwidth limiting
uses a leaky bucket scheme. The default value "inf" means Cyclone DDS
imposes no limitation, the underlying operating system and hardware will
likely limit the maimum transmit rate.
The unit must be specified explicitly. Recognised units: Xb/s, Xbps for
bits/s or XB/s, XBps for bytes/s; where X is an optional prefix: k for
10^3, Ki for 2<sup>10</sup>, M for 10<sup>6</sup>, Mi for 2<sup>20</sup>,
G for 10<sup>9</sup>, Gi for 2<sup>30</sup>.
The default value is: "inf".
#### //CycloneDDS/Domain/Internal/BuiltinEndpointSet #### //CycloneDDS/Domain/Internal/BuiltinEndpointSet
One of: full, writers, minimal One of: full, writers, minimal

View file

@ -14,98 +14,6 @@ domain ids.</p><p>The default value is: &quot;any&quot;.</p>""" ] ]
text text
}? }?
& [ a:documentation [ xml:lang="en" """ & [ a:documentation [ xml:lang="en" """
<p>This element is used to group a set of channels. The channels are
independent data paths through Cyclone DDS and by using separate threads
and setting their priorities appropriately, chanenls can be used to map
transport priorities to operating system scheduler priorities, ensuring
system-wide end-to-end priority preservation.</p>""" ] ]
element Channels {
[ a:documentation [ xml:lang="en" """
<p>This element defines a channel.</p>""" ] ]
element Channel {
[ a:documentation [ xml:lang="en" """
<p>This attribute specifies name of this channel. The name should
uniquely identify the channel.</p>""" ] ]
attribute Name {
text
}
& [ a:documentation [ xml:lang="en" """
<p>This attribute sets the transport priority threshold for the channel.
Each DCPS data writer has a "transport_priority" QoS and this QoS is used
to select a channel for use by this writer. The selected channel is the
one with the largest threshold not greater than the writer's transport
priority, and if no such channel exists, the channel with the lowest
threshold.</p><p>The default value is: &quot;0&quot;.</p>""" ] ]
attribute TransportPriority {
xsd:integer
}?
& [ a:documentation [ xml:lang="en" """
<p>This element specifies the maximum transmit rate of auxiliary traffic
on this channel (e.g. retransmits, heartbeats, etc). Bandwidth limiting
uses a leaky bucket scheme. The default value "inf" means Cyclone DDS
imposes no limitation, the underlying operating system and hardware will
likely limit the maimum transmit rate.</p>
<p>The unit must be specified explicitly. Recognised units: <i>X</i>b/s,
<i>X</i>bps for bits/s or <i>X</i>B/s, <i>X</i>Bps for bytes/s; where
<i>X</i> is an optional prefix: k for 10<sup>3</sup>, Ki for
2<sup>10</sup>, M for 10<sup>6</sup>, Mi for 2<sup>20</sup>, G for
10<sup>9</sup>, Gi for 2<sup>30</sup>.</p><p>The default value is:
&quot;inf&quot;.</p>""" ] ]
element AuxiliaryBandwidthLimit {
bandwidth
}?
& [ a:documentation [ xml:lang="en" """
<p>This element specifies the maximum transmit rate of new samples and
directly related data, for this channel. Bandwidth limiting uses a leaky
bucket scheme. The default value "inf" means Cyclone DDS imposes no
limitation, the underlying operating system and hardware will likely
limit the maimum transmit rate.</p>
<p>The unit must be specified explicitly. Recognised units: <i>X</i>b/s,
<i>X</i>bps for bits/s or <i>X</i>B/s, <i>X</i>Bps for bytes/s; where
<i>X</i> is an optional prefix: k for 10<sup>3</sup>, Ki for
2<sup>10</sup>, M for 10<sup>6</sup>, Mi for 2<sup>20</sup>, G for
10<sup>9</sup>, Gi for 2<sup>30</sup>.</p><p>The default value is:
&quot;inf&quot;.</p>""" ] ]
element DataBandwidthLimit {
bandwidth
}?
& [ a:documentation [ xml:lang="en" """
<p>This element describes the DiffServ setting the channel will apply to
the networking messages. This parameter determines the value of the
diffserv field of the IP version 4 packets sent on this channel which
allows QoS setting to be applied to the network traffic send on this
channel.<br/>
Windows platform support for setting the diffserv field is dependent on
the OS version.<br/>
For Windows versions XP SP2 and 2003 to use the diffserv field the
following parameter should be added to the register:<br/><br>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\DisableUserTOSSetting<br/><br/>
The type of this parameter is a DWORD and its value should be set to 0 to
allow setting of the diffserv field.<br/><br/>
For Windows version 7 or higher a new API (qWAVE) has been introduced.
For these platforms the specified diffserv value is mapped to one of the
support traffic types.
The mapping is as follows: 1-8 background traffic; 9-40 excellent
traffic; 41-55 audio/video traffic; 56 voice traffic; 57-63 control
traffic.
When an application is run without Administrative priveleges then only
the diffserv value of 0, 8, 40 or 56 is allowed.</p><p>The default value
is: &quot;0&quot;.</p>""" ] ]
element DiffServField {
xsd:integer
}?
}*
}?
& [ a:documentation [ xml:lang="en" """
<p>The Compatibility elements allows specifying various settings related <p>The Compatibility elements allows specifying various settings related
to compatability with standards and with other DDSI implementations.</p>""" ] ] to compatability with standards and with other DDSI implementations.</p>""" ] ]
element Compatibility { element Compatibility {
@ -567,24 +475,6 @@ day.</p><p>The default value is: &quot;1 s&quot;.</p>""" ] ]
duration_inf duration_inf
}? }?
& [ a:documentation [ xml:lang="en" """ & [ a:documentation [ xml:lang="en" """
<p>This element specifies the maximum transmit rate of auxiliary traffic
not bound to a specific channel, such as discovery traffic, as well as
auxiliary traffic related to a certain channel if that channel has
elected to share this global AuxiliaryBandwidthLimit. Bandwidth limiting
uses a leaky bucket scheme. The default value "inf" means Cyclone DDS
imposes no limitation, the underlying operating system and hardware will
likely limit the maimum transmit rate.</p>
<p>The unit must be specified explicitly. Recognised units: <i>X</i>b/s,
<i>X</i>bps for bits/s or <i>X</i>B/s, <i>X</i>Bps for bytes/s; where
<i>X</i> is an optional prefix: k for 10<sup>3</sup>, Ki for
2<sup>10</sup>, M for 10<sup>6</sup>, Mi for 2<sup>20</sup>, G for
10<sup>9</sup>, Gi for 2<sup>30</sup>.</p><p>The default value is:
&quot;inf&quot;.</p>""" ] ]
element AuxiliaryBandwidthLimit {
bandwidth
}?
& [ a:documentation [ xml:lang="en" """
<p>This element controls which participants will have which built-in <p>This element controls which participants will have which built-in
endpoints for the discovery and liveliness protocols. Valid values endpoints for the discovery and liveliness protocols. Valid values
are:</p> are:</p>

View file

@ -18,7 +18,6 @@ CycloneDDS configuration</xs:documentation>
</xs:annotation> </xs:annotation>
<xs:complexType> <xs:complexType>
<xs:all> <xs:all>
<xs:element minOccurs="0" ref="Channels"/>
<xs:element minOccurs="0" ref="Compatibility"/> <xs:element minOccurs="0" ref="Compatibility"/>
<xs:element minOccurs="0" ref="Discovery"/> <xs:element minOccurs="0" ref="Discovery"/>
<xs:element minOccurs="0" ref="General"/> <xs:element minOccurs="0" ref="General"/>
@ -50,118 +49,6 @@ domain ids.&lt;/p&gt;&lt;p&gt;The default value is: &amp;quot;any&amp;quot;.&lt;
</xs:attribute> </xs:attribute>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="Channels">
<xs:annotation>
<xs:documentation>
&lt;p&gt;This element is used to group a set of channels. The channels are
independent data paths through Cyclone DDS and by using separate threads
and setting their priorities appropriately, chanenls can be used to map
transport priorities to operating system scheduler priorities, ensuring
system-wide end-to-end priority preservation.&lt;/p&gt;</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="Channel"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Channel">
<xs:annotation>
<xs:documentation>
&lt;p&gt;This element defines a channel.&lt;/p&gt;</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element minOccurs="0" name="AuxiliaryBandwidthLimit" type="bandwidth">
<xs:annotation>
<xs:documentation>
&lt;p&gt;This element specifies the maximum transmit rate of auxiliary traffic
on this channel (e.g. retransmits, heartbeats, etc). Bandwidth limiting
uses a leaky bucket scheme. The default value "inf" means Cyclone DDS
imposes no limitation, the underlying operating system and hardware will
likely limit the maimum transmit rate.&lt;/p&gt;
&lt;p&gt;The unit must be specified explicitly. Recognised units: &lt;i&gt;X&lt;/i&gt;b/s,
&lt;i&gt;X&lt;/i&gt;bps for bits/s or &lt;i&gt;X&lt;/i&gt;B/s, &lt;i&gt;X&lt;/i&gt;Bps for bytes/s; where
&lt;i&gt;X&lt;/i&gt; is an optional prefix: k for 10&lt;sup&gt;3&lt;/sup&gt;, Ki for
2&lt;sup&gt;10&lt;/sup&gt;, M for 10&lt;sup&gt;6&lt;/sup&gt;, Mi for 2&lt;sup&gt;20&lt;/sup&gt;, G for
10&lt;sup&gt;9&lt;/sup&gt;, Gi for 2&lt;sup&gt;30&lt;/sup&gt;.&lt;/p&gt;&lt;p&gt;The default value is:
&amp;quot;inf&amp;quot;.&lt;/p&gt;</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" ref="DataBandwidthLimit"/>
<xs:element minOccurs="0" ref="DiffServField"/>
</xs:all>
<xs:attribute name="Name" use="required">
<xs:annotation>
<xs:documentation>
&lt;p&gt;This attribute specifies name of this channel. The name should
uniquely identify the channel.&lt;/p&gt;</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="TransportPriority" type="xs:integer">
<xs:annotation>
<xs:documentation>
&lt;p&gt;This attribute sets the transport priority threshold for the channel.
Each DCPS data writer has a "transport_priority" QoS and this QoS is used
to select a channel for use by this writer. The selected channel is the
one with the largest threshold not greater than the writer's transport
priority, and if no such channel exists, the channel with the lowest
threshold.&lt;/p&gt;&lt;p&gt;The default value is: &amp;quot;0&amp;quot;.&lt;/p&gt;</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="DataBandwidthLimit" type="bandwidth">
<xs:annotation>
<xs:documentation>
&lt;p&gt;This element specifies the maximum transmit rate of new samples and
directly related data, for this channel. Bandwidth limiting uses a leaky
bucket scheme. The default value "inf" means Cyclone DDS imposes no
limitation, the underlying operating system and hardware will likely
limit the maimum transmit rate.&lt;/p&gt;
&lt;p&gt;The unit must be specified explicitly. Recognised units: &lt;i&gt;X&lt;/i&gt;b/s,
&lt;i&gt;X&lt;/i&gt;bps for bits/s or &lt;i&gt;X&lt;/i&gt;B/s, &lt;i&gt;X&lt;/i&gt;Bps for bytes/s; where
&lt;i&gt;X&lt;/i&gt; is an optional prefix: k for 10&lt;sup&gt;3&lt;/sup&gt;, Ki for
2&lt;sup&gt;10&lt;/sup&gt;, M for 10&lt;sup&gt;6&lt;/sup&gt;, Mi for 2&lt;sup&gt;20&lt;/sup&gt;, G for
10&lt;sup&gt;9&lt;/sup&gt;, Gi for 2&lt;sup&gt;30&lt;/sup&gt;.&lt;/p&gt;&lt;p&gt;The default value is:
&amp;quot;inf&amp;quot;.&lt;/p&gt;</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="DiffServField" type="xs:integer">
<xs:annotation>
<xs:documentation>
&lt;p&gt;This element describes the DiffServ setting the channel will apply to
the networking messages. This parameter determines the value of the
diffserv field of the IP version 4 packets sent on this channel which
allows QoS setting to be applied to the network traffic send on this
channel.&lt;br/&gt;
Windows platform support for setting the diffserv field is dependent on
the OS version.&lt;br/&gt;
For Windows versions XP SP2 and 2003 to use the diffserv field the
following parameter should be added to the register:&lt;br/&gt;&lt;br&gt;
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\DisableUserTOSSetting&lt;br/&gt;&lt;br/&gt;
The type of this parameter is a DWORD and its value should be set to 0 to
allow setting of the diffserv field.&lt;br/&gt;&lt;br/&gt;
For Windows version 7 or higher a new API (qWAVE) has been introduced.
For these platforms the specified diffserv value is mapped to one of the
support traffic types.
The mapping is as follows: 1-8 background traffic; 9-40 excellent
traffic; 41-55 audio/video traffic; 56 voice traffic; 57-63 control
traffic.
When an application is run without Administrative priveleges then only
the diffserv value of 0, 8, 40 or 56 is allowed.&lt;/p&gt;&lt;p&gt;The default value
is: &amp;quot;0&amp;quot;.&lt;/p&gt;</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Compatibility"> <xs:element name="Compatibility">
<xs:annotation> <xs:annotation>
<xs:documentation> <xs:documentation>
@ -732,25 +619,6 @@ reserved. This includes renaming or moving options.&lt;/p&gt;</xs:documentation>
<xs:element minOccurs="0" ref="AccelerateRexmitBlockSize"/> <xs:element minOccurs="0" ref="AccelerateRexmitBlockSize"/>
<xs:element minOccurs="0" ref="AssumeMulticastCapable"/> <xs:element minOccurs="0" ref="AssumeMulticastCapable"/>
<xs:element minOccurs="0" ref="AutoReschedNackDelay"/> <xs:element minOccurs="0" ref="AutoReschedNackDelay"/>
<xs:element minOccurs="0" name="AuxiliaryBandwidthLimit" type="bandwidth">
<xs:annotation>
<xs:documentation>
&lt;p&gt;This element specifies the maximum transmit rate of auxiliary traffic
not bound to a specific channel, such as discovery traffic, as well as
auxiliary traffic related to a certain channel if that channel has
elected to share this global AuxiliaryBandwidthLimit. Bandwidth limiting
uses a leaky bucket scheme. The default value "inf" means Cyclone DDS
imposes no limitation, the underlying operating system and hardware will
likely limit the maimum transmit rate.&lt;/p&gt;
&lt;p&gt;The unit must be specified explicitly. Recognised units: &lt;i&gt;X&lt;/i&gt;b/s,
&lt;i&gt;X&lt;/i&gt;bps for bits/s or &lt;i&gt;X&lt;/i&gt;B/s, &lt;i&gt;X&lt;/i&gt;Bps for bytes/s; where
&lt;i&gt;X&lt;/i&gt; is an optional prefix: k for 10&lt;sup&gt;3&lt;/sup&gt;, Ki for
2&lt;sup&gt;10&lt;/sup&gt;, M for 10&lt;sup&gt;6&lt;/sup&gt;, Mi for 2&lt;sup&gt;20&lt;/sup&gt;, G for
10&lt;sup&gt;9&lt;/sup&gt;, Gi for 2&lt;sup&gt;30&lt;/sup&gt;.&lt;/p&gt;&lt;p&gt;The default value is:
&amp;quot;inf&amp;quot;.&lt;/p&gt;</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" ref="BuiltinEndpointSet"/> <xs:element minOccurs="0" ref="BuiltinEndpointSet"/>
<xs:element minOccurs="0" ref="ControlTopic"/> <xs:element minOccurs="0" ref="ControlTopic"/>
<xs:element minOccurs="0" ref="DDSI2DirectMaxThreads"/> <xs:element minOccurs="0" ref="DDSI2DirectMaxThreads"/>