IPP Mail Archive: IPP>PRO examples for proposed tweak to protocol

IPP>PRO examples for proposed tweak to protocol

Robert Herriot (Robert.Herriot@Eng.Sun.COM)
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