remove legacy configuration settings
These settings all constitute settings from the long history of the DDSI stack predating Eclipse Cyclone DDS and can reasonably be presumed never to have been used in Cyclone. Their removal is therefore not expected to break backwards compatibility (which would be anyway be limited to Cyclone complaining about undefined settings at startup): * Tracing/Timestamps[@absolute]: has always been ignored * Tracing/Timestamps: has always been ignored * General/EnableLoopback: ignored for quite some time, before that changing it from the default resulted in crashes. * General/StartupModeDuration: it did what it advertised (retain data in the history caches of volatile writers as-if they were transient-local with a durability history setting of keep-last 1 for the first few seconds after startup of the DDSI stack) but had no purpose other than complicating things as the volatile readers ignored the data anyway. * General/StartupModeCoversTransient: see previous -- and besides, transient data is not supported yet in Cyclone. * Compatibility/RespondToRtiInitZeroAckWithInvalidHeartbeat: arguably a good setting given that DDSI < 2.3 explicitly requires that all HEARTBEAT messages sent by a writer advertise the existence of at least 1 sample, but this has been fixed in DDSI 2.3. As this requirement was never respected by most DDSI implementations, there is no point in retaining the setting, while it does remove a rather tricky problem immediately after writer startup involving the conjuring up of a sample that was annihilated immediately before it could have been observed. That conjuring up (as it turns out) can cause a malformed message to go out (one that is harmless in itself). Fixing the generation of that malformed message while the entire point of the trick is moot in DDSI 2.3 is a bit silly. Note that full DDSI 2.3 compliance needs a bit more work, so not bumping the DDSI protocol version number yet. * Compatibility/AckNackNumbitsEmptySet: changing it from 0 breaks compatibility with (at least) RTI Connext, and its reason for existence disappers with a fix in DDSI 2.3. * Internal/AggressiveKeepLastWhc: changing the setting from the default made no sense whatsoever in Cyclone -- it would only add flow-control and potentially block a keep-last writer where the spec forbids that. * Internal/LegacyFragmentation: a left-over from almost a decade ago when it was discovered that the specification was inconsistent in the use of the message header flags for fragmented data, and this stack for a while used the non-common interpretation. There is no reasonable way of making the two modes compatible, and this setting merely existed to deal with the compatibility issue with some ancient OpenSplice DDS version. * Durability/Encoding: historical junk. * WatchDog and Lease: never had any function in Cyclone. Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
parent
a7c7ac54c3
commit
b5251d0390
13 changed files with 1771 additions and 2140 deletions
|
@ -313,38 +313,13 @@ dds_writer_qos_set(
|
|||
|
||||
static struct whc *make_whc(const dds_qos_t *qos)
|
||||
{
|
||||
bool startup_mode;
|
||||
bool handle_as_transient_local;
|
||||
unsigned hdepth, tldepth;
|
||||
/* Startup mode causes the writer to treat data in its WHC as if
|
||||
transient-local, for the first few seconds after startup of the
|
||||
DDSI service. It is done for volatile reliable writers only
|
||||
(which automatically excludes all builtin writers) or for all
|
||||
writers except volatile best-effort & transient-local ones.
|
||||
|
||||
Which one to use depends on whether merge policies are in effect
|
||||
in durability. If yes, then durability will take care of all
|
||||
transient & persistent data; if no, DDSI discovery usually takes
|
||||
too long and this'll save you.
|
||||
|
||||
Note: may still be cleared, if it turns out we are not maintaining
|
||||
an index at all (e.g., volatile KEEP_ALL) */
|
||||
if (config.startup_mode_full) {
|
||||
startup_mode = gv.startup_mode &&
|
||||
(qos->durability.kind >= NN_TRANSIENT_DURABILITY_QOS ||
|
||||
(qos->durability.kind == NN_VOLATILE_DURABILITY_QOS &&
|
||||
qos->reliability.kind != NN_BEST_EFFORT_RELIABILITY_QOS));
|
||||
} else {
|
||||
startup_mode = gv.startup_mode &&
|
||||
(qos->durability.kind == NN_VOLATILE_DURABILITY_QOS &&
|
||||
qos->reliability.kind != NN_BEST_EFFORT_RELIABILITY_QOS);
|
||||
}
|
||||
|
||||
/* Construct WHC -- if aggressive_keep_last1 is set, the WHC will
|
||||
drop all samples for which a later update is available. This
|
||||
forces it to maintain a tlidx. */
|
||||
handle_as_transient_local = (qos->durability.kind == NN_TRANSIENT_LOCAL_DURABILITY_QOS);
|
||||
if (!config.aggressive_keep_last_whc || qos->history.kind == NN_KEEP_ALL_HISTORY_QOS)
|
||||
if (qos->history.kind == NN_KEEP_ALL_HISTORY_QOS)
|
||||
hdepth = 0;
|
||||
else
|
||||
hdepth = (unsigned)qos->history.depth;
|
||||
|
@ -353,8 +328,6 @@ static struct whc *make_whc(const dds_qos_t *qos)
|
|||
tldepth = 0;
|
||||
else
|
||||
tldepth = (unsigned)qos->durability_service.history.depth;
|
||||
} else if (startup_mode) {
|
||||
tldepth = (hdepth == 0) ? 1 : hdepth;
|
||||
} else {
|
||||
tldepth = 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue