add QoS to ignore local readers/writers (#78)
Adds a new "ignorelocal" QoS to the readers/writers to ignore local matching readers/writers, with three settings: * DDS_IGNORELOCAL_NONE: default * DDS_IGNORELOCAL_PARTICIPANT: ignores readers/writers in the same participant * DDS_IGNORELOCAL_PROCESS: ignores readers/writers in the same process These can be set/got using dds_qset_ignorelocal and dds_qget_ignorelocal. If a matching reader or writer is ignored because of this setting, it is as-if that reader or writer doesn't exist. No traffic will be generated or data retained on its behalf. There are no consequences for interoperability as this is (by definition) a local affair. Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
parent
a6b5229510
commit
4778d6c5df
5 changed files with 103 additions and 0 deletions
|
@ -136,6 +136,16 @@ typedef enum dds_presentation_access_scope_kind
|
|||
}
|
||||
dds_presentation_access_scope_kind_t;
|
||||
|
||||
/** Ignore-local QoS: Applies to DataReader, DataWriter */
|
||||
typedef enum dds_ignorelocal_kind
|
||||
{
|
||||
DDS_IGNORELOCAL_NONE,
|
||||
DDS_IGNORELOCAL_PARTICIPANT,
|
||||
DDS_IGNORELOCAL_PROCESS
|
||||
}
|
||||
dds_ignorelocal_kind_t;
|
||||
|
||||
|
||||
/**
|
||||
* @brief Allocate memory and initialize default QoS-policies
|
||||
*
|
||||
|
@ -465,6 +475,16 @@ dds_qset_durability_service (
|
|||
int32_t max_instances,
|
||||
int32_t max_samples_per_instance);
|
||||
|
||||
/**
|
||||
* @brief Set the ignore-local policy of a qos structure
|
||||
*
|
||||
* @param[in,out] qos - Pointer to a dds_qos_t structure that will store the policy
|
||||
* @param[in] ignore - True if readers and writers owned by the same participant should be ignored
|
||||
*/
|
||||
DDS_EXPORT void dds_qset_ignorelocal (
|
||||
dds_qos_t * __restrict qos,
|
||||
dds_ignorelocal_kind_t ignore);
|
||||
|
||||
/**
|
||||
* @brief Get the userdata from a qos structure
|
||||
*
|
||||
|
@ -753,6 +773,19 @@ dds_qget_durability_service (
|
|||
int32_t *max_instances,
|
||||
int32_t *max_samples_per_instance);
|
||||
|
||||
/**
|
||||
* @brief Get the ignore-local qos policy
|
||||
*
|
||||
* @param[in] qos - Pointer to a dds_qos_t structure storing the policy
|
||||
* @param[in,out] ignore - Pointer that will store whether to ignore readers/writers owned by the same participant (optional)
|
||||
*
|
||||
* @returns - false iff any of the arguments is invalid or the qos is not present in the qos object
|
||||
*/
|
||||
DDS_EXPORT bool
|
||||
dds_qget_ignorelocal (
|
||||
const dds_qos_t * __restrict qos,
|
||||
dds_ignorelocal_kind_t *ignore);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue