DDS 1.0 NO IDEA Avatar
  1. OMG Issue

DDS — Ref-02 Data_Available_status_transition

  • Key: DDS-85
  • Legacy Issue Number: 6791
  • Status: closed  
  • Source: Real-Time Innovations ( Dr. Gerardo Pardo-Castellote, Ph.D.)
  • Summary:

    The data available status becomes TRUE when data is available, but
    under what condition does it become FALSE again?

    According the specification when data is taken, but does this only
    apply to the object that is accessed? Or do the status values of other
    objects that become untrue as a result of the take action also need to
    be changed?

    Example: A reader with 3 queries, data arrives and the status of the
    reader and all queries become TRUE. The data is taken via the reader,
    do the status values of the queries become FALSE?

    **PROPOSAL**

    Add the following clarifications to section 2.1.4.4

    DataReader::take() and DataReader::read() changes the status of the
    queries that are no longer true after the 'take'. Since 'take' removes
    the data from the service so its no longer there it would make little
    sense for the status to remain enabled.

    In other words the same way that arrival of data may change the 'data
    available status' of any query, so would the 'taking' or 'reading' of
    data potentially affect all queries.

    Note that this does not mean that waitesets that were attached to the
    query will not be woken up. This is an implementation issue. Once the
    query status changes to 'enabled' it may wake up the attached waitset,
    transitioning to 'not-enabled' does not necessarily 'unwakeup' the
    waitset since this operation is in general not possible. The
    consequence is that the application may be woken up and not see any
    active conditions. This is unavoidable if multiple threads are
    concurrently taking data.

  • Reported: DDS 1.0b1 — Tue, 23 Dec 2003 05:00 GMT
  • Disposition: Resolved — DDS 1.0
  • Disposition Summary:

    see below

  • Updated: Fri, 6 Mar 2015 20:58 GMT