What's so unique about 'job-hold-until-specified' that it MUST be supported when all other job state reasons specify SHOULD only?
>>> "Hastings, Tom N" <hastings at cp10.es.xerox.com> 06/02/99 06:57PM >>>
Comments on the proposed resolution to the IPP/1.1 issue concerning the
conformance requirements for specific values of the REQUIRED
"job-state-reasons" and "printer-state-reasons" attributes had been raised
on the mailing list as WG Last Call comments. At the IPP WG meeting on
5/26-27 we agreed to the following resolution to these comments.
The editors will be updating the IPP/1.1 Model and Semantics document and
the Encoding and Transport document to reflect these agreements. Any
comments should be send to the mailing list by Thursday, June 10, 1999.
Then the resulting documents will be sent as Internet-Drafts on Friday, June
11, 1999 for review by the IESG as proposed standards.
The following state reasons have the indicated conformance requirements
added to reflect conformance requirements already stated elsewhere in the
document. All of the other values are OPTIONAL:
'none': There are no reasons for the job's current state. This
state reason is semantically equivalent to "job-state-reasons" without any
value and MUST be used when there is no other value, since the 1setOf
attribute syntax requires at least one value.
'document-access-error': After accepting a Print-URI or Send-URI
request, the Printer could not access one or more documents passed by
reference. This reason is intended to cover any file access problem,
including file does not exist and access denied because of an access control
problem. Whether the Printer aborts the job and moves the job to the
'aborted' job state or prints all documents that are accessible and moves
the job to the 'completed' job state and adds the 'completed-with-errors'
value in the job's "job-state-reasons" attribute depends on implementation
and/or site policy. This value SHOULD be supported if the Print-URI or
Send-URI operations are supported. Issue 35
'job-hold-until-specified': The value of the job's "job-hold-until"
attribute was specified with a time period that is still in the future. The
job MUST NOT be a candidate for processing until this reason is removed and
there are no other reasons to hold the job. This value MUST be supported if
the "job-hold-until" Job Template attribute is supported.
'job-canceled-by-user': The job was canceled by the owner of the
job using the Cancel-Job request, i.e., by a user whose authenticated
identity is the same as the value of the originating user that created the
Job object, or by some other authorized end-user, such as a member of the
job owner's security group. This value SHOULD be supported.
'job-canceled-by-operator': The job was canceled by the operator
using the Cancel-Job request, i.e., by a user who has been authenticated as
having operator privileges (whether local or remote). If the security
policy is to allow anyone to cancel anyone's job, then this value may be
used when the job is canceled by other than the owner of the job. For such
a security policy, in effect, everyone is an operator as far as canceling
jobs with IPP is concerned. This value SHOULD be supported if the
implementation permits canceling by other than the owner of the job.
'job-canceled-at-device': The job was canceled by an unidentified
local user, i.e., a user at a console at the device. This value SHOULD be
supported if the implementation supports canceling jobs at the console.
'aborted-by-system': The job (1) is in the process of being
aborted, (2) has been aborted by the system and placed in the 'aborted'
state, or (3) has been aborted by the system and placed in the
'pending-held' state, so that a user or operator can manually try the job
again. This value SHOULD be supported.
'processing-to-stop-point': The requester has issued a Cancel-Job
operation or the Printer object has aborted the job, but is still performing
some actions on the job until a specified stop point occurs or job
termination/cleanup is completed.
If the implementation requires some measurable time to
cancel the job in the 'processing' or 'processing-stopped' job states, the
IPP object MUST use this value to indicate that the Printer object is still
performing some actions on the job while the job remains in the 'processing'
or 'processing-stopped' state. After all the job's job description
attributes have stopped incrementing, the Printer object moves the job from
the 'processing' state to the 'canceled' or 'aborted' job states.
'job-completed-successfully': The job completed successfully. This
value SHOULD be supported.
'job-completed-with-warnings': The job completed with warnings.
This value SHOULD be supported if the implementation detects warnings.
'job-completed-with-errors': The job completed with errors (and
possibly warnings too). This value SHOULD be supported if the
implementation detects errors.
'job-restartable' - This job is retained (see section 4.3..7.1 and
is currently able to be restarted using the Restart-Job operation (see
section 3.3.7)). If 'job-restartable' is a value of the job's
'job-state-reasons' attribute, then the IPP object MUST accept a Restart-Job
operation for that job. This value SHOULD be supported if the Restart-Job
operation is supported.
'none': There are not reasons. This state reason is semantically
equivalent to "printer-state-reasons" without any value and MUST be used,
since the 1setOf attribute syntax requires at least one value.
'moving-to-paused': Someone has paused the Printer object using the
Pause-Printer operation (see section 3.2.7 or other means, but the device(s)
are taking an appreciable time to stop. Later, when all output has stopped,
the "printer-state" becomes 'stopped', and the 'paused' value replaces the
'moving-to-paused' value in the "printer-state-reasons" attribute. This
value MUST be supported, if the Pause-Printer operation is supported and the
implementation takes significant time to pause a device in certain
'paused': Someone has paused the Printer object using the
Pause-Printer operation (see section 3.2.7 or other means and the Printer
object's "printer-state" is 'stopped'. In this state, a Printer MUST NOT
produce printed output, but it MUST perform other operations requested by a
client. If a Printer had been printing a job when the Printer was paused,
the Printer MUST resume printing that job when the Printer is no longer
paused and leave no evidence in the printed output of such a pause. This
value MUST be supported, if the Pause-Printer operation is supported.
'spool-area-full': The limit of persistent storage allocated for
spooling has been reached. The Printer is temporarily unable to accept more
jobs. The Printer will remove this value when it is able to accept more
jobs. This value SHOULD be used by a non-spooling Printer that only accepts
one or a small number jobs at a time or a spooling Printer that has filled
the spool space.
[The 'spool-area-full' clarification also relates to Issue 20: Non-spooling
printers accept/reject additional jobs]