Server Objects

Updated: April 19, 2023

PPS supports a special type of object called a server object. When a client writes to a server object, only the application (called the server) that created the object with the ?server option gets the message. Other clients can't see that message.

At write time, PPS appends a unique identifier to the object name so that the server knows which client connection is sending the message. This allows the connection to have stateful information. For example:

@foo.1234

indicates object foo with client identifier 1234. When a client connects, the server reads a new object that is prefixed with a + symbol (for example, +@foo.1234). Disconnects are sent to the server, and the + prefix is changed to a - prefix.

When a server replies, it must write the object name with the unique identifier appended so that the response is sent only to the client that is marked by the unique identifier. If a server doesn't append the unique identifier to the object name, the message is broadcast to all clients that are connected to the object.

For more information about sending and receiving messages from server objects, see Working with server objects.”

An application that opens an object with the ?server option automatically becomes a critical publisher of that object. It also automatically receives notifications in delta mode.

CAUTION:
Don't duplicate file descriptors of server objects. Behavior with duplicate server file descriptors is undetermined.

The following figure shows a PPS transaction using the ?server option:

Figure 1. Using the ?server option.