diff --git a/docs/makernc.pl b/docs/makernc.pl index d423ed8..bf09371 100644 --- a/docs/makernc.pl +++ b/docs/makernc.pl @@ -5,13 +5,14 @@ if 0; use strict; use Data::Dumper; -if (@ARGV != 2) { - print STDERR "usage: $0 input output_basename\n"; +if (@ARGV != 3) { + print STDERR "usage: $0 input output.md output.rnc\n"; exit 2; } 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 # 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 # - hard definitions of enums in here # - 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; 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 ""; } -my %tab2elems; my %elem; my %typehint_seen; +my %tables; + 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 "grammar {\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 = ""; conv_table($fh, \&conv_to_md, \@root, "/", " ", "", \$sep_blurb); close $fh; @@ -216,7 +225,6 @@ sub store_entry { $name =~ s/\|.*//; # aliases are not visible in osplconf my $ltable = lc $table; my $lname = lc $name; - push @{$tab2elems{$ltable}}, $name; 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}} : ""; if ($kind eq "GROUP" || $kind eq "MGROUP") { @@ -250,15 +258,15 @@ sub store_entry { my $desc = clean_description($description).$ub; $desc .= "

The default value is: "$defaultvalue".

" if defined $defaultvalue; - $elem{"$ltable/$lname"} = { kind => $kind, kstr => $kstr, - subtables => $subtables, multiplicity => $multiplicity, - min_occ => $min_occ, max_occ => $max_occ, root => 0, - defaultvalue => $defaultvalue, typehint => $typehint, - description => $desc }; + my $fs; + push @{$tables{$table}}, { table => $table, name => $name, + kind => $kind, kstr => $kstr, + subtables => $subtables, multiplicity => $multiplicity, + 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{$typehint} = 1; - #printf "%s - $s\n", "$ltable/$lname", $elem{"$ltable/lname"}; - #$typehint = ""; } sub fmtblurb { @@ -449,38 +457,55 @@ sub conv_to_md { } sub conv_table { - my ($fh, $convsub, $tablesref, $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 ($fh, $convsub, $tablenames, $fqname, $indent, $prefix, $closure) = @_; my $elems = 0; - for (my $i = 0; $i < @ns; $i++) { - my $fs = $elem{lc "$ts[$i]/$ns[$i]"}; - my $fqname1; - if ($fs->{kind} eq "ATTR") { - die unless $elems == 0; - $fqname1 = "${fqname}[\@$ns[$i]]"; - } else { - $fqname1 = "$fqname/$ns[$i]"; - $elems++; + for (@$tablenames) { + next unless exists $tables{$_}; + for my $fs (sort { $a->{name} cmp $b->{name} } @{$tables{$_}}) { + my $fqname1; + if ($fs->{kind} eq "ATTR") { + die unless $elems == 0; + $fqname1 = "${fqname}[\@$fs->{name}]"; + } else { + $fqname1 = "$fqname/$fs->{name}"; + $elems++; + } + my $prefix1 = ($fs->{table} eq "unsupp_cfgelems") ? "Internal" : $prefix; + &$convsub ($fh, $fs, $fs->{name}, $fqname1, $indent, $prefix1, $closure); } - &$convsub ($fh, $fs, $ns[$i], $fqname1, $indent, ($ts[$i] eq "unsupp_cfgelems") ? "Internal" : $prefix, $closure); } } 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 ($name, $table, $kind, @subtables, $multiplicity, $defaultvalue, $typehint, $description); 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"; while () { 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) { $description .= $_; #print " .. $_\n"; @@ -489,7 +514,8 @@ sub read_config { if ($gobbling_description && /(^|")(\s*\)) *\} *, *$/) { $gobbling_description = 0; 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; } @@ -624,7 +650,8 @@ sub read_config { # description ending on same line $description = $1; 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 { # strip the quotes &c. once the full text has been gathered $description = $rest; @@ -636,11 +663,10 @@ sub read_config { } close FH; - #print "$tab2elems{cyclonedds_root_cfgelems}\n"; - my @rootnames = @{$tab2elems{cyclonedds_root_cfgelems}}; - die "error: cyclonedds_root_cfgelems has no or multiple entries\n" if @rootnames != 1; - die "error: root_cfgelems doesn't exist\n" unless exists $tab2elems{root_cfgelems}; - my $root = $elem{lc "cyclonedds_root_cfgelems/$rootnames[0]"}; + my @roots = @{$tables{cyclonedds_root_cfgelems}}; + die "error: cyclonedds_root_cfgelems has no or multiple entries\n" if @roots != 1; + die "error: root_cfgelems doesn't exist\n" unless exists $tables{root_cfgelems}; + my $root = $roots[0]; die "error: root_cfgelems doesn't exist\n" unless defined $root; $root->{min_occ} = $root->{max_occ} = $root->{isroot} = 1; while (my ($k, $v) = each %typehint_seen) { diff --git a/docs/manual/options.md b/docs/manual/options.md index 3ed9e5a..7f375ef 100644 --- a/docs/manual/options.md +++ b/docs/manual/options.md @@ -8,7 +8,7 @@ CycloneDDS configuration ## //CycloneDDS/Domain 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. @@ -23,113 +23,6 @@ domain ids. 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 210, M for 106, Mi for 220, -G for 109, Gi for 230. - -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 210, M for 106, Mi for 220, -G for 109, Gi for 230. - -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.
- -Windows platform support for setting the diffserv field is dependent on -the OS version.
- -For Windows versions XP SP2 and 2003 to use the diffserv field the -following parameter should be added to the register:

- -HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\DisableUserTOSSetting

- -The type of this parameter is a DWORD and its value should be set to 0 to -allow setting of the diffserv field.

- -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 Children: [AssumeRtiHasPmdEndpoints](#cycloneddsdomaincompatibilityassumertihaspmdendpoints), [ExplicitlyPublishQosSetToDefault](#cycloneddsdomaincompatibilityexplicitlypublishqossettodefault), [ManySocketsMode](#cycloneddsdomaincompatibilitymanysocketsmode), [StandardsConformance](#cycloneddsdomaincompatibilitystandardsconformance) @@ -641,7 +534,7 @@ The default value is: "default". ### //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 @@ -687,25 +580,6 @@ Valid values are finite durations with an explicit unit or the keyword 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 210, M for 106, Mi for 220, -G for 109, Gi for 230. - -The default value is: "inf". - - #### //CycloneDDS/Domain/Internal/BuiltinEndpointSet One of: full, writers, minimal diff --git a/etc/cyclonedds.rnc b/etc/cyclonedds.rnc index 41e0b7f..de54eef 100644 --- a/etc/cyclonedds.rnc +++ b/etc/cyclonedds.rnc @@ -14,98 +14,6 @@ domain ids.

The default value is: "any".

""" ] ] text }? & [ a:documentation [ xml:lang="en" """ -

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.

""" ] ] - element Channels { - [ a:documentation [ xml:lang="en" """ -

This element defines a channel.

""" ] ] - element Channel { - [ a:documentation [ xml:lang="en" """ -

This attribute specifies name of this channel. The name should -uniquely identify the channel.

""" ] ] - attribute Name { - text - } - & [ a:documentation [ xml:lang="en" """ -

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".

""" ] ] - attribute TransportPriority { - xsd:integer - }? - & [ a:documentation [ xml:lang="en" """ -

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 103, Ki for -210, M for 106, Mi for 220, G for -109, Gi for 230.

The default value is: -"inf".

""" ] ] - element AuxiliaryBandwidthLimit { - bandwidth - }? - & [ a:documentation [ xml:lang="en" """ -

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 103, Ki for -210, M for 106, Mi for 220, G for -109, Gi for 230.

The default value is: -"inf".

""" ] ] - element DataBandwidthLimit { - bandwidth - }? - & [ a:documentation [ xml:lang="en" """ -

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.
- -Windows platform support for setting the diffserv field is dependent on -the OS version.
- -For Windows versions XP SP2 and 2003 to use the diffserv field the -following parameter should be added to the register:

- -HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\DisableUserTOSSetting

- -The type of this parameter is a DWORD and its value should be set to 0 to -allow setting of the diffserv field.

- -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".

""" ] ] - element DiffServField { - xsd:integer - }? - }* - }? - & [ a:documentation [ xml:lang="en" """

The Compatibility elements allows specifying various settings related to compatability with standards and with other DDSI implementations.

""" ] ] element Compatibility { @@ -567,24 +475,6 @@ day.

The default value is: "1 s".

""" ] ] duration_inf }? & [ a:documentation [ xml:lang="en" """ -

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 103, Ki for -210, M for 106, Mi for 220, G for -109, Gi for 230.

The default value is: -"inf".

""" ] ] - element AuxiliaryBandwidthLimit { - bandwidth - }? - & [ a:documentation [ xml:lang="en" """

This element controls which participants will have which built-in endpoints for the discovery and liveliness protocols. Valid values are:

diff --git a/etc/cyclonedds.xsd b/etc/cyclonedds.xsd index 591cb94..7e2beed 100644 --- a/etc/cyclonedds.xsd +++ b/etc/cyclonedds.xsd @@ -18,7 +18,6 @@ CycloneDDS configuration - @@ -50,118 +49,6 @@ domain ids.</p><p>The default value is: &quot;any&quot;.< - - - -<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> - - - - - - - - - - -<p>This element defines a channel.</p> - - - - - - -<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> - - - - - - - - -<p>This attribute specifies name of this channel. The name should -uniquely identify the channel.</p> - - - - - -<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> - - - - - - - -<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> - - - - - -<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> - - @@ -732,25 +619,6 @@ reserved. This includes renaming or moving options.</p> - - - -<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> - -