Remove ArrivalOfDataAssertsPpAndEpLiveliness option
The Compatibility/ArrivalOfDataAssertsPpAndEpLiveliness option was a rather strange option: receipt of a message is proof of the existence of the sender, so having an option to not treat it as such only adds complexity without any benefit. Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
parent
7bffaedde8
commit
8a1980faa6
6 changed files with 9 additions and 29 deletions
|
@ -372,7 +372,6 @@ struct config
|
|||
enum nn_standards_conformance standards_conformance;
|
||||
int explicitly_publish_qos_set_to_default;
|
||||
enum many_sockets_mode many_sockets_mode;
|
||||
int arrival_of_data_asserts_pp_and_ep_liveliness;
|
||||
int assume_rti_has_pmd_endpoints;
|
||||
|
||||
int port_dg;
|
||||
|
|
|
@ -351,7 +351,6 @@ struct proxy_writer {
|
|||
unsigned last_fragnum_reset: 1; /* iff set, heartbeat advertising last_seq as highest seq resets last_fragnum */
|
||||
unsigned deliver_synchronously: 1; /* iff 1, delivery happens straight from receive thread for non-historical data; else through delivery queue "dqueue" */
|
||||
unsigned have_seen_heartbeat: 1; /* iff 1, we have received at least on heartbeat from this proxy writer */
|
||||
unsigned assert_pp_lease: 1; /* iff 1, renew the proxy-participant's lease when data comes in */
|
||||
unsigned local_matching_inprogress: 1; /* iff 1, we are still busy matching local readers; this is so we don't deliver incoming data to some but not all readers initially */
|
||||
#ifdef DDSI_INCLUDE_SSM
|
||||
unsigned supports_ssm: 1; /* iff 1, this proxy writer supports SSM */
|
||||
|
@ -370,7 +369,6 @@ struct proxy_reader {
|
|||
struct proxy_endpoint_common c;
|
||||
unsigned deleting: 1; /* set when being deleted */
|
||||
unsigned is_fict_trans_reader: 1; /* only true when it is certain that is a fictitious transient data reader (affects built-in topic generation) */
|
||||
unsigned assert_pp_lease: 1; /* iff 1, renew the proxy-participant's lease when data comes in */
|
||||
#ifdef DDSI_INCLUDE_SSM
|
||||
unsigned favours_ssm: 1; /* iff 1, this proxy reader favours SSM when available */
|
||||
#endif
|
||||
|
|
|
@ -432,8 +432,6 @@ static const struct cfgelem compatibility_cfgelems[] = {
|
|||
{ LEAF ("ManySocketsMode"), 1, "single", ABSOFF (many_sockets_mode), 0, uf_many_sockets_mode, 0, pf_many_sockets_mode,
|
||||
BLURB("<p>This option specifies whether a network socket will be created for each domain participant on a host. The specification seems to assume that each participant has a unique address, and setting this option will ensure this to be the case. This is not the defeault.</p>\n\
|
||||
<p>Disabling it slightly improves performance and reduces network traffic somewhat. It also causes the set of port numbers needed by DDSI2E to become predictable, which may be useful for firewall and NAT configuration.</p>") },
|
||||
{ LEAF("ArrivalOfDataAssertsPpAndEpLiveliness"), 1, "true", ABSOFF(arrival_of_data_asserts_pp_and_ep_liveliness), 0, uf_boolean, 0, pf_boolean,
|
||||
BLURB("<p>When set to true, arrival of a message from a peer asserts liveliness of that peer. When set to false, only SPDP and explicit lease renewals have this effect.</p>") },
|
||||
{ LEAF("AssumeRtiHasPmdEndpoints"), 1, "false", ABSOFF(assume_rti_has_pmd_endpoints), 0, uf_boolean, 0, pf_boolean,
|
||||
BLURB("<p>This option assumes ParticipantMessageData endpoints required by the liveliness protocol are present in RTI participants even when not properly advertised by the participant discovery protocol.</p>") },
|
||||
END_MARKER
|
||||
|
|
|
@ -4128,11 +4128,6 @@ int new_proxy_writer (const struct nn_guid *ppguid, const struct nn_guid *guid,
|
|||
pwr->supports_ssm = (addrset_contains_ssm (as) && config.allowMulticast & AMC_SSM) ? 1 : 0;
|
||||
#endif
|
||||
|
||||
/* Only assert PP lease on receipt of data if enabled (duh) and the proxy participant is a
|
||||
"real" participant, rather than the thing we use for endpoints discovered via the DS */
|
||||
pwr->assert_pp_lease =
|
||||
(unsigned) !!config.arrival_of_data_asserts_pp_and_ep_liveliness;
|
||||
|
||||
assert (pwr->c.xqos->present & QP_LIVELINESS);
|
||||
if (pwr->c.xqos->liveliness.kind != DDS_LIVELINESS_AUTOMATIC)
|
||||
DDS_LOG(DDS_LC_DISCOVERY, " FIXME: only AUTOMATIC liveliness supported");
|
||||
|
@ -4336,9 +4331,6 @@ int new_proxy_reader (const struct nn_guid *ppguid, const struct nn_guid *guid,
|
|||
prd->favours_ssm = (favours_ssm && config.allowMulticast & AMC_SSM) ? 1 : 0;
|
||||
#endif
|
||||
prd->is_fict_trans_reader = 0;
|
||||
/* Only assert PP lease on receipt of data if enabled (duh) and the proxy participant is a
|
||||
"real" participant, rather than the thing we use for endpoints discovered via the DS */
|
||||
prd->assert_pp_lease = (unsigned) !!config.arrival_of_data_asserts_pp_and_ep_liveliness;
|
||||
|
||||
ddsrt_avl_init (&prd_writers_treedef, &prd->writers);
|
||||
|
||||
|
|
|
@ -363,8 +363,9 @@ void handle_PMD (UNUSED_ARG (const struct receiver_state *rst), nn_wctime_t time
|
|||
{
|
||||
/* Renew lease if arrival of this message didn't already do so, also renew the lease
|
||||
of the virtual participant used for DS-discovered endpoints */
|
||||
if (!config.arrival_of_data_asserts_pp_and_ep_liveliness)
|
||||
lease_renew (ddsrt_atomic_ldvoidp (&pp->lease), now_et ());
|
||||
#if 0 // FIXME: superfluous ... receipt of the message already did it */
|
||||
lease_renew (ddsrt_atomic_ldvoidp (&pp->lease), now_et ());
|
||||
#endif
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -715,8 +715,7 @@ static int handle_AckNack (struct receiver_state *rst, nn_etime_t tnow, const Ac
|
|||
}
|
||||
|
||||
/* liveliness is still only implemented partially (with all set to AUTOMATIC, BY_PARTICIPANT, &c.), so we simply renew the proxy participant's lease. */
|
||||
if (prd->assert_pp_lease)
|
||||
lease_renew (ddsrt_atomic_ldvoidp (&prd->c.proxypp->lease), tnow);
|
||||
lease_renew (ddsrt_atomic_ldvoidp (&prd->c.proxypp->lease), tnow);
|
||||
|
||||
if (!wr->reliable) /* note: reliability can't be changed */
|
||||
{
|
||||
|
@ -1189,8 +1188,7 @@ static int handle_Heartbeat (struct receiver_state *rst, nn_etime_t tnow, struct
|
|||
|
||||
/* liveliness is still only implemented partially (with all set to AUTOMATIC,
|
||||
BY_PARTICIPANT, &c.), so we simply renew the proxy participant's lease. */
|
||||
if (pwr->assert_pp_lease)
|
||||
lease_renew (ddsrt_atomic_ldvoidp (&pwr->c.proxypp->lease), tnow);
|
||||
lease_renew (ddsrt_atomic_ldvoidp (&pwr->c.proxypp->lease), tnow);
|
||||
|
||||
DDS_TRACE(PGUIDFMT" -> "PGUIDFMT":", PGUID (src), PGUID (dst));
|
||||
|
||||
|
@ -1326,8 +1324,7 @@ static int handle_HeartbeatFrag (struct receiver_state *rst, UNUSED_ARG(nn_etime
|
|||
}
|
||||
|
||||
/* liveliness is still only implemented partially (with all set to AUTOMATIC, BY_PARTICIPANT, &c.), so we simply renew the proxy participant's lease. */
|
||||
if (pwr->assert_pp_lease)
|
||||
lease_renew (ddsrt_atomic_ldvoidp (&pwr->c.proxypp->lease), tnow);
|
||||
lease_renew (ddsrt_atomic_ldvoidp (&pwr->c.proxypp->lease), tnow);
|
||||
|
||||
DDS_TRACE(" "PGUIDFMT" -> "PGUIDFMT"", PGUID (src), PGUID (dst));
|
||||
ddsrt_mutex_lock (&pwr->e.lock);
|
||||
|
@ -1453,8 +1450,7 @@ static int handle_NackFrag (struct receiver_state *rst, nn_etime_t tnow, const N
|
|||
}
|
||||
|
||||
/* liveliness is still only implemented partially (with all set to AUTOMATIC, BY_PARTICIPANT, &c.), so we simply renew the proxy participant's lease. */
|
||||
if (prd->assert_pp_lease)
|
||||
lease_renew (ddsrt_atomic_ldvoidp (&prd->c.proxypp->lease), tnow);
|
||||
lease_renew (ddsrt_atomic_ldvoidp (&prd->c.proxypp->lease), tnow);
|
||||
|
||||
if (!wr->reliable) /* note: reliability can't be changed */
|
||||
{
|
||||
|
@ -1700,8 +1696,7 @@ static int handle_Gap (struct receiver_state *rst, nn_etime_t tnow, struct nn_rm
|
|||
}
|
||||
|
||||
/* liveliness is still only implemented partially (with all set to AUTOMATIC, BY_PARTICIPANT, &c.), so we simply renew the proxy participant's lease. */
|
||||
if (pwr->assert_pp_lease)
|
||||
lease_renew (ddsrt_atomic_ldvoidp (&pwr->c.proxypp->lease), tnow);
|
||||
lease_renew (ddsrt_atomic_ldvoidp (&pwr->c.proxypp->lease), tnow);
|
||||
|
||||
ddsrt_mutex_lock (&pwr->e.lock);
|
||||
if ((wn = ddsrt_avl_lookup (&pwr_readers_treedef, &pwr->readers, &dst)) == NULL)
|
||||
|
@ -2133,10 +2128,7 @@ static void handle_regular (struct receiver_state *rst, nn_etime_t tnow, struct
|
|||
/* liveliness is still only implemented partially (with all set to
|
||||
AUTOMATIC, BY_PARTICIPANT, &c.), so we simply renew the proxy
|
||||
participant's lease. */
|
||||
if (pwr->assert_pp_lease)
|
||||
{
|
||||
lease_renew (ddsrt_atomic_ldvoidp (&pwr->c.proxypp->lease), tnow);
|
||||
}
|
||||
lease_renew (ddsrt_atomic_ldvoidp (&pwr->c.proxypp->lease), tnow);
|
||||
|
||||
/* Shouldn't lock the full writer, but will do so for now */
|
||||
ddsrt_mutex_lock (&pwr->e.lock);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue