Multiple publishers

PPS supports multiple publishers that publish to the same PPS object. This capability is required because different publishers may have access to data that applies to different attributes for the same object.

Note: It's safe for more than one publisher to write to the objects because the pps manager guarantees that each PPS write() is atomic.

For example, in a multimedia system with a PlayCurrent object, io-media may be the source of a time::value attribute, while the HMI may be the source of a duration::value attribute. A publisher that changes only the time attribute will update only that attribute when it writes to the object. It will leave the other attributes unchanged.

In the example above, suppose the PlayCurrent object has the following attribute values:

@PlayCurrent
author::Beatles
album::Abbey Road
title::Come Together
duration::3.45
time::1.24

If io-media updated the time attribute of the PlayCurrent object as follows:

// Update the "time" attribute
sprintf( ppsobj, "time::2.32\n" );
write( ppsobj-fd, ppsobj, strlen( ppsobj ) );

and then the HMI updated the duration attribute as follows:

// Update the "duration" attribute
sprintf( ppsobj, "duration::4.02\n" );
write( ppsobj-fd, ppsobj, strlen( ppsobj ) );

The result would be:

@PlayCurrent
author::Beatles
album::Abbey Road
title::Come Together
duration::4.02
time::2.32

For another example, see Publishers in the Examples appendix.