DDS-WEB 1.0 FTF Avatar
  1. OMG Issue

DDSWEB — Incomplete specification of the GET operation on the DataReader (Section 7.4.8.1)

  • Key: DDSWEB-29
  • Status: closed  
  • Source: Real-Time Innovations ( Dr. Gerardo Pardo-Castellote, Ph.D.)
  • Summary:

    Section 7.4.8.1 describes the operation “get” on a DataReader and describes the behavior when the sampleSelector is a pure “FilterExpression” or a pure “MetadataExpression” however the SampleSelector can be an expression that combines both a FilterExpression and a MetadataExpression and the behavior on that situation is not specified.

    In addition on that section Case 3. It says:
    “Case 3: If the sampleSelector is a FilterExpression, then the operation uses the MetadataExpression …”
    where it really should say:
    “Case 3: If the sampleSelector is a MetadataExpression, then the operation uses the MetadataExpression …”

    In addition the MetadataExpression can include an expression on the InstanceHandle. This case is also not described.

  • Reported: DDS-WEB 1.0b1 — Sat, 15 Aug 2015 02:35 GMT
  • Disposition: Resolved — DDS-WEB 1.0
  • Disposition Summary:

    *Extend description of the GET operation to capture all the cases where there is both a FilterExpression and a MetadataExpression *


    Edit the description in section 7.4.8.1 per the instructions below.

    Change “FilterExpression or MetadataExpression” to “FilterExpression, MetadataExpression, or both” in the sentence below:

    It parses the sampleSelector to determine if it is a DDS FilterExpression or MetadataExpression, MetadataExpression, or both. If there is a parse error, it returns the INVALID_INPUT error.


    Change “three” to “four” and “or it contains a MetadataExpression.” to “a MetadataExpression, or both” in the sentence below:

    There are fourthree possible cases depending on whether the sampleSelector is empty, it contains a FilterExpression, or it contains a MetadataExpression. a MetadataExpression, or both.


    Replace Case 3 with the text below:

    Case 3: If the sampleSelector is a MetadataExpression there are two situations:

    3.1 If the MetadataExpression does not contain an InstanceHandleExpr, then the operation uses the MetadataExpression to deduce the desired sample_state, view_state, and instance_state. These states are used as parameters to calling read and/or take to obtain samples that match the desired states. Other than this the logic is the same as in Case 1.

    3.2 If the MetadataExpression contains the InstanceHandleExpr, then the InstanceHandleExpr is analyzed to deduce the desired InstanceHandle objects. The rest of the MetadataExpression is analyzed as described in case 3.1 to also derive the desired sample/view/instance states. These parameters are used in multiple calls to read_instance or take_instance passing each of the desired InstanceHandle objects and the desired sample/view/instance states. Other than this the logic is the same as in Case 1.


    Add Case 4 as written below:

    Case 4: If the sampleSelector contains both a FilterExpression and a MetadataExpression then there are two situations:

    4.1 If MetadataExpression does not contain an InstanceHandleExpr, then the operation uses the MetadataExpression to deduce the desired sample/state/view states. There are two possibilities:
    4.1.1 If the logical operation between the MetadataExpression and the FilterExpression is AND, then the operation constructs a QueryCondition using the FilterExpression from the sampleSelector and the desired sample/state/view states and proceeds as in Case 2.
    4.1.2 If the logical operation between the MetadataExpression and the FilterExpression is OR, then the operation constructs a QueryCondition using the FilterExpression from the sampleSelector and leaving the states as "any". In addition it also creates a ReadCondition using the desired sample/state/view states. The operation uses the two conditions separately to call read_w_condition (or take_w_condition) separately using the ReadCondition and QueryCondition and then join the results. The management of the minSamples and maxWait parameters is the same as per Case 1.

    4.2 If the MetadataExpression contains the InstanceHandleExpr, then the InstanceHandleExpr is analyzed to deduce the desired InstanceHandle objects.
    4.2.1 If the logical operation between the MetadataExpression and the FilterExpression is AND the operation constructs a QueryCondition using the FilterExpression and the desired sample/state/view states similar to 4.1.1. The operation then calls read_instance_w_condition (or take_instance_w_condition) iterating over each of the instances. The results are combined. The management of the minSamples and maxWait parameters is the same as per Case 1.
    4.2.2 If the logical operation between the MetadataExpression and the FilterExpression is OR, then the operation constructs a QueryCondition and the ReadCondition the same way as in 4.1.2. In addition the operation analyzes the InstanceHandleExpr to deduce the desired instances. Finally the operation calls read_instance_w_condition (or read_instance_w_condition) on each of the instances of interest passing the ReadCondition and also calls read_w_condition (or take_w_condition) passing the QueryCondition. The results are combined. The management of minSamples and maxWait parameters is the same as per Case 1.

  • Updated: Tue, 22 Dec 2015 15:08 GMT