Exclude network channels from documentation
They are not supported yet. Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
parent
d429045255
commit
a25b69be7d
4 changed files with 68 additions and 410 deletions
106
docs/makernc.pl
106
docs/makernc.pl
|
@ -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: "$defaultvalue".</p>" if defined $defaultvalue;
|
$desc .= "<p>The default value is: "$defaultvalue".</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) {
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -14,98 +14,6 @@ domain ids.</p><p>The default value is: "any".</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: "0".</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:
|
|
||||||
"inf".</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:
|
|
||||||
"inf".</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: "0".</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: "1 s".</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:
|
|
||||||
"inf".</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>
|
||||||
|
|
|
@ -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.</p><p>The default value is: &quot;any&quot;.<
|
||||||
</xs:attribute>
|
</xs:attribute>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
<xs:element name="Channels">
|
|
||||||
<xs:annotation>
|
|
||||||
<xs:documentation>
|
|
||||||
<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></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>
|
|
||||||
<p>This element defines a channel.</p></xs:documentation>
|
|
||||||
</xs:annotation>
|
|
||||||
<xs:complexType>
|
|
||||||
<xs:all>
|
|
||||||
<xs:element minOccurs="0" name="AuxiliaryBandwidthLimit" type="bandwidth">
|
|
||||||
<xs:annotation>
|
|
||||||
<xs:documentation>
|
|
||||||
<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></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>
|
|
||||||
<p>This attribute specifies name of this channel. The name should
|
|
||||||
uniquely identify the channel.</p></xs:documentation>
|
|
||||||
</xs:annotation>
|
|
||||||
</xs:attribute>
|
|
||||||
<xs:attribute name="TransportPriority" type="xs:integer">
|
|
||||||
<xs:annotation>
|
|
||||||
<xs:documentation>
|
|
||||||
<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></xs:documentation>
|
|
||||||
</xs:annotation>
|
|
||||||
</xs:attribute>
|
|
||||||
</xs:complexType>
|
|
||||||
</xs:element>
|
|
||||||
<xs:element name="DataBandwidthLimit" type="bandwidth">
|
|
||||||
<xs:annotation>
|
|
||||||
<xs:documentation>
|
|
||||||
<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></xs:documentation>
|
|
||||||
</xs:annotation>
|
|
||||||
</xs:element>
|
|
||||||
<xs:element name="DiffServField" type="xs:integer">
|
|
||||||
<xs:annotation>
|
|
||||||
<xs:documentation>
|
|
||||||
<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></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.</p></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>
|
|
||||||
<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></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"/>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue