b) Initiator

We need to encapsulate a relationship between an operation and its initiator, so that, in a typical scenario, the initiator may create and submit the operation in a non-blocking way, yet being confident that it will be carried out. The operation will eventually trigger its initiator back in an appropriate manner, to notify it of results, or of progress, as defined in their protocol.

This relationship is typed, as a couple of examples will show:

The initiator of an operation consisting of configuring a node in a transmission network actually registers two callbacks (to the operation, not to the scheduler): one for success, one for failure. The operation will know which one to trigger at the time of its completion.

The initiator of a low-level input operation for a text processor may register only one callback for character input. This implies that the initiator has some separate means to detect the end of input, to which it reacts by deleting the pending input operation.

The existence of such a two-way relationship allows to chain operations and thus to compose them either sequentially or in parallel.

Table of contents


Marc Girod
Last modified: Sat Feb 28 14:25:24 EET 1998