Subject: IPP> MOD - "compression" should not be a Job Description attribute

From: Tom Hastings <[email-masked]>
Date: Thu, 8 Jan 1998 18:25:59 PST

When we moved "compression", "job-k-octets", "job-impressions", and
"job-media-sheets" from being Job Template attributes to being operation
attributes and Job Description attributes, we made a slight mistake.

The "compression" attribute is a per-document attribute and so should
be treated like "document-format".  Its an operation attribute, but
not a Job Description attribute.  In IPP/1.0, you just can't query
either the "compression" or the "document-format" attribute on the
job object.

The summary of the changes are:
1. delete the "compression" attribute as a Job Description attribute
2. delete the "compression" as an operation attribute from the Create-Job
3. add "compressions" as an operation attribute to Send-Document and
Send-URI 4. keep "compression" as an operation attribute for Print-Job,
Print-URI, and Job-Validate.

Here are the details:

1. In 3.2.1.1 Print-Job Request remove the sentence about populating
the "compression" job description attribute:

If the client supplies the attribute and the Printer object supports the
attribute, the value of the attribute is used to populate the Job object's
"compression" Job Description attribute. 

So that the operation attribute will read:

"compression" (type3 keyword)

The client OPTIONALLY supplies this attribute.  The Printer object
OPTIONALLY supports this attribute.  It identifies the compression
algorithm used on the document data (see section 4.3.17).  If the client
omits this attribute, the Printer object SHALL assume that the data is not
compressed.  If the client supplies this attribute, but the value is not
supported by the Printer object, i.e., the value is not one of the values
of the Printer object's "compression-supported" attribute, the Printer
object SHALL copy the attribute and its value to the Unsupported Attributes
response group, reject the request, and return the
'client-error-attributes-or-values-not-supported' status code.

2. In section 3.2.4 Create-Job Operation, add "compression" to the list
of Print-Job operation attributes that are not allowed in the Create-Job
operation.  Also add "operation" before attributes, so that it reads:

Also, the client does not supply any of the "document-name",
"document-format",   "document-natural-language", or "compression"
operation attributes.  

3. In section 3.3.1.1 Send-Document Request, add "compression" as an
operation attribute, just after "document-format-language".  Might as well
just copy the entire paragraph from Print-Job, or reference back to it.
2. Delete the "compression" entry from the table in section 
4.3 Job Description Attributes

4. In section 4.3.17 delete the entire "compression" job description 
attribute and move the description of the values to the 4.4.29
"compression-supported" Printer Description attribute (which is missing,
along with "job-k-octets-supported", "job-impressions-supported", and
"job-media-sheets-supported" attributes).

I suggest something like:

4.4.29 compression-supported (1setOf type3 keyword)

This Printer attribute identifies the set of compression algorithms supported 
by the IPP object for accepting compressed document data.  Compression
does not apply to the encoding of the IPP operation itself.  These values 
are supported for use in the "compression" operation attribute.  
See the specification of the "compression" operation attribute in the 
Print-Job operation request.

Standard values are:

'none': no compression is used.
'deflate':  ZIP public domain inflate/deflate) compression technology
'gzip' GNU zip compression technology described in RFC 1952 [RFC1952].
'compress': UNIX compression technology

4.4.30 job-k-octets-supported (rangeOfInteger(0:MAX))

This Printer attribute specifies the lower and upper bound of sizes 
in K octets supported for the sum of the documents for the job.  This range
of 
values is supported for use in the "job-k-octets" operation attribute.  
See the specification of "job-k-octets" operation attribute in the 
Print-Job operation request and the corresponding "job-k-octets"
job description attribute in section 4.3.18.

4.4.31 job-impressions-supported (rangeOfInteger(0:MAX))

This Printer attribute specifies the lower and upper bound of number of
impressions supported for the job.  This range of 
values is supported for use in the "job-impressions" operation attribute.  
See the specification of "job-impressions" operation attribute in the 
Print-Job operation request and the corresponding "job-impressions"
job description attribute in section 4.3.19.

4.4.32 job-media-sheets-supported (rangeOfInteger(0:MAX))

This Printer attribute specifies the lower and upper bound of number of
media sheets to be produced by a job.  This range of 
values is supported for use in the "job-meida-sheets" operation attribute.  
See the specification of "job-media-sheets" operation attribute in the 
Print-Job operation request and the corresponding "job-media-sheets"
job description attribute in section 4.3.20.

5. Add a reference to RFC 1952 in 4.4.29 and add to the References section:
'gzip' GNU zip compression technology described in RFC 1952 [RFC1952].

[RFC1952]
    P. Deutsch, "GZIP file format specification version 4.3", RFC 1952, 
    May 1996

6. In section 15.3.3.3 Validate the presence of a single occurence of 
required Operation attributes:

a. delete the "compression" operation attribute from the Create-Job operation
		compression (O*)
b. add the "compression" operation attribute to the Send-Document operation
		compression (O*)
c. add the "compression" operation attribute to the Send-URI operation
		compression (O*)