Subject: IPP>PRO examples for proposed tweak to protocol

From: [email-masked] (Robert Herriot)
Date: Thu, 10 Jul 1997 18:16:38 -0700

Good idea Jay.
 
> Bob, can you post a couple of encoding examples, where each example
> is shown using the current agreed upon encoding *and* your new
> "tweaked" form?  Your effort would be greatly appreciated by those
> of us who are currently inundated by work on other, related printer
> standards efforts.
> 
> 	...jay
> 

In the following examples, the 'agreed octets' column shows
the agreed-on protocol. The 'new octets' columns shows the proposed protocol.
Some rows in the 'agreed octets' column are empty where there are no bytes of
that type in the protocol. 

I am keeping the typing simple by having only generic integer and
generic string which I called unspecified integer and unspecified
string in the proposal yesterday. These two value types are probably
sufficient to satisfy the requirement states by advocates of the type byte.

I have marked rows that differ between the two protocols with '|'.
The additions and changes to the new protocol are:
    each name-length is preceded by a value-tag in hte new protocol
    there is a new parameter-tag before the parameter-sequence if there 
        are parameters.
    the attribute-tag and data-tags are reduced to a single byte and
        have different values

Here is an example of a Print-Job request.
 
      Agreed      New 
      Octets      Octets     Description

      0x0100      0x0100      version
      0x0002      0x0002      operation
|     0xFFFE      0x02        attribute tag (no preceding parameters)
|                 0x40        value-tag (generic string)
      0x0008      0x0008      name-length
      job-name    job-name    name
      0x0006      0x0006      value-length
      foobar      foobar      value
|                 0x20        value-tag (generic integer)
      0x0005      0x0005      name-length
      copies      copies      name
      0x0001      0x0001      value-length
      0x01        0x01        value
|     0xFFFF      0x03        data-tag
      %!PS...     %!PS...     data     

Here is an example of Print-URI request with the same parameters as with 
Print-Job

      Agreed      New 
      Octets      Octets     Description

      0x0100      0x0100      version
      0x0003      0x0003      operation
|                 0x01        parameter tag 
      0x000A      0x000A      name-length
     document-uri document-uri name
      0x0011      0x11        value-length
 ftp://foo.com/foo ftp://foo.com/foo value
|     0xFFFE      0x02        attribute tag 
|                 0x40        value-tag (generic (unspecified) string)
      0x0008      0x0008      name-length
      job-name    job-name    name
      0x0006      0x0006      value-length
      foobar      foobar      value
|                 0x20        value-tag (generic (unspecified) integer)
      0x0005      0x0005      name-length
      copies      copies      name
      0x0001      0x0001      value-length
      0x01        0x01        value
|     0xFFFF      0x03        data-tag
      %!PS...     %!PS...     data     

Here is an example of Create-Job request with the no parameters and
no attributes

      Agreed      New 
      Octets      Octets     Description

      0x0100      0x0100      version
      0x0005      0x0005      operation
|     0xFFFF      0x03        data-tag
      %!PS...     %!PS...     data     

Here is an example of a Get-Jobs request with parameters but no attributes.

      Agreed                New 
      Octets                Octets                Description

      0x0100                0x0100                version
      0x000A                0x000A                operation
|                           0x01                  parameter-tag
|                           0x20                  value-tag (generic integer)
      0x0005                0x0005                name-length
      limit                 limit                 name
      0x0001                0x0001                value-length
      0x32                  0x32                  value
|                           0x40                  value-tag (generic string)
      0x0014                0x0014                name-length
      requested-attributes  requested-attributes  name
      0x0007                0x0007                value-length
      job-uri               job-uri               value
|                           0x40                  value-tag (generic string)
      0x0000                0x0000                name-length (multi-valued)
      0x0008                0x0008                value-length
      job-name              job-name              value
|     0xFFFF                0x03                  data-tag

Here is an example of Get-Jobs response from previous request

      Agreed                New 
      Octets                Octets                Description

      0x0100                0x0100                version
      0x0000                0x0000                status
|                           0x01                  parameter-tag
|                           0x40                  value-tag (generic integer)
      0x0005                0x0005                name-length
      reason-phrase         reason-phrase         name
      0x0002                0x0002                value-length
      OK                    OK                    value
|     0xFFFE                0x02                  attribute-tag (1st object)
|                           0x40                  value-tag (generic string)
      0x0007                0x0007                name-length
      job-uri               job-uri               name
      0x000E                0x000E                value-length
      http://foo/123        http://foo/123        value
|                           0x40                  value-tag (generic string)
      0x0008                0x0008                name-length
      job-name              job-name              name
      0x0003                0x0003                name-length
      foo                   foo                   name
|     0xFFFE                0x02                  attribute-tag (2nd object)
|                           0x40                  value-tag (generic string) 
      0x0007                0x0007                name-length 
      job-uri               job-uri               name 
      0x000E                0x000E                value-length 
      http://foo/124        http://foo/124        value 
|                           0x40                  value-tag (generic string)
      0x0008                0x0008                name-length
      job-name              job-name              name
      0x0003                0x0003                name-length 
      bar                   bar                   name 
|     0xFFFF                0x03                  data-tag