diff --git a/src/core/ddsc/src/dds__readcond.h b/src/core/ddsc/src/dds__readcond.h index adedd2d..b5465c0 100644 --- a/src/core/ddsc/src/dds__readcond.h +++ b/src/core/ddsc/src/dds__readcond.h @@ -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 diff --git a/src/core/ddsc/src/dds_querycond.c b/src/core/ddsc/src/dds_querycond.c index 6748079..5da179c 100644 --- a/src/core/ddsc/src/dds_querycond.c +++ b/src/core/ddsc/src/dds_querycond.c @@ -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"); diff --git a/src/core/ddsc/src/dds_readcond.c b/src/core/ddsc/src/dds_readcond.c index 1ec86cc..3af397c 100644 --- a/src/core/ddsc/src/dds_readcond.c +++ b/src/core/ddsc/src/dds_readcond.c @@ -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);