Harry and I discussed the paper and have the following comments for the
telecon Wednesday, 12/8/99:
0. Clarify in the introduction that the purpose of this simplification is
so that the semantics of each of the Printer and Device operation have
and consistent rules that are the same for all of the possible
1. We think that there should also be a Quiesce-Device and Restart-Device
that goes with Quiesce-Printer and Restart-Printer.
2. We think that there isn't a need for Shutdown-Printer (since exiting the
process is really getting into the implementation too much which doesn't
seem very useful).
2a. The main difference between Quiesce-Device and Shutdown-Device is the
notion of powering off during Shutdown.
3. To avoid misleading interpretations of "Shutdown" based on the PC
paradigm, for example, lets call a spade a spade and rename Shutdown-Device
4. Reset-Device needs to be added back. It has been in the operation
proposals before and was inadvertently dropped.
So the complete list of Printer and Device operations would become:
Printer operation Corresponding Device operation
5. We think that we need the "when" operation attribute back for the
Pause-Printer and Pause-Device operations only.
5a. Pause-Printer example: The printer may be configured with special media
and the operator may want to "cap" the queue, so to speak, allowing the
current set of jobs that can use the current media to print, but wants to
allow new jobs to be submitted (and placed on hold) which will ultimately
be printed after the operator reconfigures the media (twice).
So the Pause-Printer should be augmented with "when" values:
'after-current-job' and 'after-all-current-jobs'.
The latter causes all future jobs that are submitted to be put into the
'processing-held' state with the 'printer-paused' value added to the job's
"job-state-reasons" attribute. The Printer removes the value when the
operator performs the Resume-Printer operation.
5b. Pause-Device example: The operator may want to remove the current
stacked jobs from the output bin because it is close to filling up or it
is necessary to deliver a partial order.
So the Pause-Device should be augmented with "when" values:
'now' and 'after-current-copy'.
The 'now' value is as soon as the device can pause without losing
anything when the Resume-Device is issued.
Printers MUST support 'after-current-job' if they support the
Pause-Printer operation; 'after-all-current-jobs' is OPTIONAL.
Printers MUST support 'now' if they support the Pause-Device operation;
'after-current-copy' is OPTIONAL.
To help a client know which values are supported, add one "when-supported"
(1setOf type2 keyword) Printer Description attribute that suffices for both
operations, since the values are distinct.
6. Section 5 Forwarding Printer and Device operations
Problem: The client needs a way to know the state of Device operations
We agree that Printer operations MUST never be forwarded, and that Device
operations MAY be forwarded depending on implementation and/or
configuration. And we agree that an implementation that does forward
Device operations to down stream Printer objects or output devices
MUST NOT wait to respond to the Device request before sending or
receiving responses from the down stream devices. Therefore, there
is a period of uncertainty for the client as to when the actual Device
operation(s) will have been accepted and actually completed. But this
uncertainty is no different than if there is no forwarding and there is
only one output device. Some operations actually take time, such as
Pause-Device or Shutdown-Device. Also some of the operations may
actually not complete, either because of network connectivity problems
or other problems encountered while attempting to perform the operation.
Therefore, we suggest that we add 3 "printer-state-reasons" values for each
of the Device operations:
devices-moving-to-xxx one or more devices moving to xxx,
devices-xxx all devices are in xxx,
devices-xxx-failure one or more devices failed to move to xxx,
The Printer object that supports a Xxxx Device operation (whether it
forwards or not), MAY support these "printer-state-reasons" values to
indicate to the client what is happening. How the Printer object sets and
removes these values depends on implementation and MAY include polling the
down stream Printer(s) or output device(s), if any. With IPP notification,
the client could subscribe for Printer events that would send a
notification when the "printer-state-reasons" changed, so that the client
would know when the Device operation completed for all devices or failed
for at least one of them.
Of course the best state information is available when fan-out is supported
with subordinate Printers, as in configuration E, as opposed to D, in the
paper. However, these Printer state reasons are still needed whether there
is fan-out or not and whether there is forwarding of Device operations or
We probably need the three values for the following Device operations,
(including the new or renamed ones suggested above):
devices-moving-to-disabled, devices-disabled, devices-disable-failed
devices-moving-to-enabled, *, devices-enable-failed
devices-moving-to-purged, devices-purged, devices-purge-failed
devices-moving-to-quiescent, devices-quiescent, devices-quiescent-failed
devices-moving-to-restarted, *, devices-restart-failed
devices-moving-to-reset, *, devices-restart-failed
The * indicate values that are not needed, since the absence of any
corresponding value is a sufficient indication of the condition.
We don't want state reasons to be present all the time under normal
operation, only under exception conditions.
7. Maybe better to call Printer C that feeds only Printer C1 a "chained
Printer" rather than a "cascaded Printer".
8. Section 11.2: Probably more consistent to change the name of
"device-submission-channel-type" to "job-submission-channel-type", because
it is a job attribute and its the "job submission" channel that we are
Tom and Harry