Instruction set reference
HIPE_OP_FIFO_INFO
Carries properties of a FIFO relationship: for example, which application has the resource and what the user chose it for, so that an application can tell the user why their file is in use ("notes.txt is open in Appscape"). Properties stated by the framing manager are kept apart from what the application at the other end says about itself.
- location: Sending a message: A value of 0 (corresponding to the body element of the client frame) means the message should be sent to the direct parent of this client. A location corresponding to a child frame means send the message to the client connected to that frame. Receiving a message: A value of 0 (corresponding to body element) means the message came from the direct parent of this frame. A location value corresponding to a child frame means the message came from that client.
- arg[0]: The FIFO resource path, as given in HIPE_OP_FIFO_RESPONSE.
- arg[1]: Properties stated by the framing manager.
- arg[2]: Properties the application at the other end stated about itself.
- arg[3]: Reserved. Send it empty.
Properties
Properties are lines of the form key=value, separated by newline characters. The key is everything before the first =; the value is everything after it, as UTF-8 text with no newline characters.
- A message carries only the keys that have changed. A key replaces the earlier value of the same key from the same source (framing manager or other application).
- An empty value (key=) means the value is no longer known.
- Ignore any key you don't know. Keys not listed below start with x- and the sending application's name, e.g. x-appscape-.
| Key | In | Value |
|---|---|---|
| ability | arg[1] | The name of the ability the user chose for this relationship, as the host gave it in HIPE_OP_FIFO_ADD_ABILITY, e.g. Edit in Appscape. |
| peer-title | arg[1] | The title of the application at the other end, as the framing manager shows it to the user. |
Who sends it
| Sender | When | Arguments |
|---|---|---|
| The framing manager | To both ends, after relaying a HIPE_OP_FIFO_RESPONSE that gave a resource, and whenever its properties change (e.g. the other end's title changes). | arg[1] = its properties, arg[2] empty. |
| An application at either end | When something it states about itself becomes known or changes. | arg[2] = its properties, arg[1] empty. The framing manager relays it to the other end with arg[2] unchanged and only its own properties (or nothing) in arg[1]. |
| An application at either end | To ask for the framing manager's properties. | arg[1] and arg[2] both empty. The framing manager answers that application only, with arg[1], and does not relay the request. |
Notes
An application receives this instruction from its parent (location 0), so arg[1] always comes from the framing manager. A framing manager must never copy anything an application sent into arg[1]. arg[2] is only what the other application claims.
Properties describe the other end of the relationship, not "the host" or "the client", so they keep their meaning after the roles are swapped (see "Swapping roles" under HIPE_OP_FIFO_OPEN).
The instruction is optional. A framing manager that doesn't support it sends nothing, and applications that don't support it ignore it, so an application must work without it. An application in a top-level window has no framing manager, and gets no answer.
Like the other FIFO instructions, this one is passed between frames without the Hipe display server interpreting its contents.
