cyclonedds icon indicating copy to clipboard operation
cyclonedds copied to clipboard

dds content filtered topic

Open Splinter1984 opened this issue 3 months ago • 0 comments

Content filtered topic.

This PR is initial implementation of content filtered topic according (mostly) to dds spec. The implementation introduce new dds_filter entity which is set over QoS and propogates to reader/writer endpoints (which is acrually own and operates filters). Don't forgent about a previous topic_filter API, whose "backend" replaced with new filter entity, which leads to tiny change in old-API behavior[^1]. Since old-API didn't changed, the really new thing for the user is a expression kind filter. Basically isnstead of function user may specify expr. such as "?1 + a >= b.a * c OR (?2 AND d)" where ?1 and ?2 are parameters which can be applied as one of the supported[^2] types (int64_t, double, string, blob) during runtime using corresponding API functions. a,b.a, c and d are filed names of filtering topic type according to idl type definition[^3].

[^1]: Topic entities created with the same participant, topic_name and type_name share the same QoSes, as a result if one of the entities defining a filter another catch it accordingly. [^2]: There is still missing implementation of unsigned type, which is required to fully map idl types. [^3]: Current implementation don't allows nothing but struct and primitive types to be used within expressions.

Splinter1984 avatar Oct 15 '25 12:10 Splinter1984