change initialisation of a read condition to set the query condition as well

The read condition and the query condition are represented by the same data type internally, and a read condition therefore has a "m_filter" attribute. It makes more sense to initialise this properly as part of the read condition, instead of initialisation-by-memset in the dds_create_readcond, then overwriting it in dds_create_querycond.

Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
Erik Boasson 2019-02-10 15:43:12 +01:00
parent fcdffa8cf8
commit de5021dc55
3 changed files with 10 additions and 6 deletions

View file

@ -18,6 +18,7 @@ _Must_inspect_result_ dds_readcond*
dds_create_readcond(
_In_ dds_reader *rd,
_In_ dds_entity_kind_t kind,
_In_ uint32_t mask);
_In_ uint32_t mask,
_In_opt_ dds_querycondition_filter_fn filter);
#endif

View file

@ -32,10 +32,9 @@ dds_create_querycondition(
rc = dds_reader_lock(reader, &r);
if (rc == DDS_RETCODE_OK) {
dds_readcond *cond = dds_create_readcond(r, DDS_KIND_COND_QUERY, mask);
dds_readcond *cond = dds_create_readcond(r, DDS_KIND_COND_QUERY, mask, filter);
assert(cond);
hdl = cond->m_entity.m_hdl;
cond->m_query.m_filter = filter;
dds_reader_unlock(r);
} else {
DDS_ERROR("Error occurred on locking reader\n");

View file

@ -31,10 +31,11 @@ _Must_inspect_result_ dds_readcond*
dds_create_readcond(
_In_ dds_reader *rd,
_In_ dds_entity_kind_t kind,
_In_ uint32_t mask)
_In_ uint32_t mask,
_In_opt_ dds_querycondition_filter_fn filter)
{
dds_readcond * cond = dds_alloc(sizeof(*cond));
assert(kind == DDS_KIND_COND_READ || kind == DDS_KIND_COND_QUERY);
assert((kind == DDS_KIND_COND_READ && filter == 0) || (kind == DDS_KIND_COND_QUERY && filter != 0));
cond->m_entity.m_hdl = dds_entity_init(&cond->m_entity, (dds_entity*)rd, kind, NULL, NULL, 0);
cond->m_entity.m_deriver.delete = dds_readcond_delete;
cond->m_rhc = rd->m_rd->rhc;
@ -42,6 +43,9 @@ dds_create_readcond(
cond->m_view_states = mask & DDS_ANY_VIEW_STATE;
cond->m_instance_states = mask & DDS_ANY_INSTANCE_STATE;
cond->m_rd_guid = rd->m_entity.m_guid;
if (kind == DDS_KIND_COND_QUERY) {
cond->m_query.m_filter = filter;
}
dds_rhc_add_readcondition (cond);
return cond;
}
@ -58,7 +62,7 @@ dds_create_readcondition(
rc = dds_reader_lock(reader, &rd);
if (rc == DDS_RETCODE_OK) {
dds_readcond *cond = dds_create_readcond(rd, DDS_KIND_COND_READ, mask);
dds_readcond *cond = dds_create_readcond(rd, DDS_KIND_COND_READ, mask, 0);
assert(cond);
hdl = cond->m_entity.m_hdl;
dds_reader_unlock(rd);