PM123 Playable object handling - Object properties

Information categories

The properties of a playable object are grouped into different information types. Each group of information can be requested and observed individually. The groups fit into the following categories:

  1. Object information
    The object information lies on the entity URL. It consists of
    - Physical information,
    - Technical information and
    - Detailed object information.

  2. Logical object information
    The logical object information also lies on the entity URL but it may be overridden by PlayableRef. It consists of
    - Meta information and
    - Object attributes.

  3. Aggregate information
    The aggregate information lies on the entity URL with all parent URLs in the call stack. This is because all items in the call stack are excluded from enumeration to avoid recursions. It makes the aggregate information dependent on the point of view.
    It consists of
    - Recursive playlist information and
    - Detailed recursive playlist information.
    The aggregate information also applies to song items that cannot contain sub items in the way that it takes care of slices - unlike the detailed object information.

    Unlike all other kind of information the aggregate information should be requested by RequestAggregateInfo.
    Furthermore it does not have its own events for each call stack. The event fires if any of the aggregate informations change. So if you want to track changes of individual entries you have to compare the revision number of the returned information. It is incremented on each update.

  4. Object reference information
    This kind of info lies on the entity PlayableRef. Native objects do not have this properties. Currently this is only
    Playlist item information.

  5. Runtime information
    This kind of information is not an object property. It is calculated at runtime from one or more of the other informations above.

Information state

Each group of information has the following states:

Once a type of information is provided it will never return to the state virgin. In doubt outdated information is returned.

When you request some kind of information you have the choice to do this with different reliability requirements:

Furthermore you may chose a priority level:

State graph

The following graph illustrates all valid state transitions. All changes are transactional.

Information state graph

The flash symbols indicate that a state change event informs the observers.
The clock symbols indicate that the state transition occurs in synchronized context. Any other transitions are lock-free. Note that the state transitions are synchronized, not the retrieval of the information. This is done while in service. And the synchronized part is like a commit work.

Processes

The processes that cause state transitions are: