pub struct ContentFilteredTopic<T: DdsType> { /* private fields */ }Expand description
ContentFilteredTopic<T> — Sub-Topic eines Topic<T> mit
Filter-Expression. Spec-Referenz: OMG DDS 1.4 §2.2.2.3.3.
“ContentFilteredTopic is a specialization of TopicDescription that allows for content-based subscriptions. The selection of the content is done using a filter_expression with parameters (filter_parameters).”
Die Filter-Expression ist ein SQL-Subset (DDS-DCPS Annex B, BNF):
field op literal-or-param, AND/OR/NOT-Komposition, parens,
LIKE. Der konkrete Parser sitzt in zerodds-sql-filter.
Lifecycle: das CFT haelt einen Klon des Related-Topics (shared
Arc<TopicInner>) und ist clone-bar selbst. Filter-Parameter sind
veraenderbar zur Laufzeit (Spec §2.2.2.3.3.7).
Implementations§
Source§impl<T: DdsType> ContentFilteredTopic<T>
impl<T: DdsType> ContentFilteredTopic<T>
Sourcepub fn get_filter_expression(&self) -> &str
pub fn get_filter_expression(&self) -> &str
Spec §2.2.2.3.3.4 get_filter_expression.
Sourcepub fn get_filter_parameters(&self) -> Vec<String>
pub fn get_filter_parameters(&self) -> Vec<String>
Spec §2.2.2.3.3.5 get_filter_parameters.
Sourcepub fn set_filter_parameters(&self, params: Vec<String>) -> Result<()>
pub fn set_filter_parameters(&self, params: Vec<String>) -> Result<()>
Spec §2.2.2.3.3.6 set_filter_parameters. Tauscht die
Parameter (gleiche Anzahl bleibt nicht erzwungen — die Spec
sagt “should match the number of %n tokens” als Empfehlung,
wir verifizieren das hart).
§Errors
BadParameter wenn ein %N-Index ausserhalb des neuen Vecs
liegt.
Spec §2.2.2.3.3.3 get_related_topic.
Sourcepub fn evaluate<R: RowAccess>(&self, row: &R) -> Result<bool>
pub fn evaluate<R: RowAccess>(&self, row: &R) -> Result<bool>
Wertet den Filter gegen ein decodiertes Sample aus. Liefert
Ok(true) wenn das Sample passieren soll, Ok(false) wenn es
gefiltert wird, Err wenn die Expression auf das Row-Schema
nicht passt (Caller-Entscheidung: filter denies oder error).
§Errors
PreconditionNotMetwenn die Filter-Parameter-Lock vergiftet ist.BadParameterwenn ein Feld in der Expression im Row nicht existiert oder ein Type-Mismatch auftritt.
Trait Implementations§
Source§impl<T: DdsType> Clone for ContentFilteredTopic<T>
impl<T: DdsType> Clone for ContentFilteredTopic<T>
Source§impl<T: DdsType> TopicDescription for ContentFilteredTopic<T>
impl<T: DdsType> TopicDescription for ContentFilteredTopic<T>
Source§fn get_type_name(&self) -> &str
fn get_type_name(&self) -> &str
Type-Name kommt vom Related-Topic — ein CFT teilt sich das Schema mit dem unterliegenden Topic.
Source§fn get_participant(&self) -> &DomainParticipant
fn get_participant(&self) -> &DomainParticipant
get_participant.