See Figure 9.8
Empty is the start state, and the error state is never reached, with empty cells corresponding to nops. Feed events occur due to request enqueues, and wait, wake and quit events, respectively, due to their eponymous commands.
In queue state, 20 msec intervals generate slot, last, or null events as the queue has more than one, one, or no requests, leading to a request send in the case of a non-empty queue, and changing to the empty state if there was at most one request to begin with.
In pause and sleep states, 1 second intervals generate tick or time events, as the pause timer is greater than zero or not, and in the case of tick events, also decrement the timer by one. The wait command increments the pause timer by its parameter, and is cummulative.
Sleep mode is reached when a quit command is made in pause mode, and wake clears the pause timer at any time that it occurs, so that (a), quit commands are delayed by the pause timer; (b), that delay may be increased via additional wait commands; and (c), the pending quit command is retractable while the pause timer is counting down.
Bill Pippin 2009-01-02