Let dds_create_participant determine domain id if config specifies "any" (new default)
Note: DDS_DOMAIN_DEFAULT with a configuration specifying "any" results in domain 0. Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
parent
675fbfe013
commit
bb92294f4e
10 changed files with 78 additions and 44 deletions
|
@ -32,7 +32,7 @@ dds__check_domain(
|
|||
*-# Returns 0 on success or a non-zero error status
|
||||
**/
|
||||
dds_return_t
|
||||
dds_init(void);
|
||||
dds_init(dds_domainid_t domain);
|
||||
|
||||
/* Finalization function, called from main */
|
||||
|
||||
|
|
|
@ -137,8 +137,8 @@ dds__create_builtin_participant(
|
|||
}
|
||||
|
||||
pp->m_entity.m_guid = guid;
|
||||
pp->m_entity.m_domain = dds_domain_create (config.domainId);
|
||||
pp->m_entity.m_domainid = config.domainId;
|
||||
pp->m_entity.m_domain = dds_domain_create (config.domainId.value);
|
||||
pp->m_entity.m_domainid = config.domainId.value;
|
||||
pp->m_entity.m_deriver.delete = dds__delete_builtin_participant;
|
||||
|
||||
fail:
|
||||
|
|
|
@ -41,7 +41,7 @@ dds_globals dds_global = { .m_default_domain = DDS_DOMAIN_DEFAULT };
|
|||
static struct cfgst * dds_cfgst = NULL;
|
||||
|
||||
dds_return_t
|
||||
dds_init(void)
|
||||
dds_init(dds_domainid_t domain)
|
||||
{
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
const char * uri;
|
||||
|
@ -86,9 +86,29 @@ dds_init(void)
|
|||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Failed to parse configuration XML file %s", uri);
|
||||
goto fail_config;
|
||||
}
|
||||
|
||||
/* if a domain id was explicitly given, check & fix up the configuration */
|
||||
if (domain != DDS_DOMAIN_DEFAULT)
|
||||
{
|
||||
if (domain < 0 || domain > 230)
|
||||
{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "requested domain id %d is out of range", domain);
|
||||
goto fail_config;
|
||||
}
|
||||
else if (config.domainId.isdefault)
|
||||
{
|
||||
config.domainId.value = domain;
|
||||
}
|
||||
else if (domain != config.domainId.value)
|
||||
{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "requested domain id %d is inconsistent with configured value %d", domain, config.domainId.value);
|
||||
goto fail_config;
|
||||
}
|
||||
}
|
||||
|
||||
/* The config.domainId can change internally in DDSI. So, remember what the
|
||||
* main configured domain id is. */
|
||||
dds_global.m_default_domain = config.domainId;
|
||||
dds_global.m_default_domain = config.domainId.value;
|
||||
|
||||
dds__builtin_init();
|
||||
|
||||
|
|
|
@ -148,7 +148,7 @@ dds_create_participant(
|
|||
bool asleep;
|
||||
|
||||
/* Make sure DDS instance is initialized. */
|
||||
ret = dds_init();
|
||||
ret = dds_init(domain);
|
||||
if (ret != DDS_RETCODE_OK) {
|
||||
e = (dds_entity_t)ret;
|
||||
goto fail_dds_init;
|
||||
|
|
|
@ -45,13 +45,13 @@ Test(ddsc_participant, create_with_no_conf_no_env) {
|
|||
dds_entity_t participant, participant2, participant3;
|
||||
dds_return_t status;
|
||||
dds_domainid_t domain_id;
|
||||
dds_domainid_t valid_domain=0;
|
||||
dds_domainid_t valid_domain=3;
|
||||
|
||||
const char * env_uri = os_getenv(DDSC_PROJECT_NAME_NOSPACE_CAPS"_URI");
|
||||
cr_assert_eq(env_uri, NULL, DDSC_PROJECT_NAME_NOSPACE_CAPS"_URI must be NULL");
|
||||
|
||||
//invalid domain
|
||||
participant = dds_create_participant (1, NULL, NULL);
|
||||
participant = dds_create_participant (-2, NULL, NULL);
|
||||
cr_assert_lt(participant, 0, "Error must be received for invalid domain value");
|
||||
|
||||
//valid specific domain value
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue