IPP Mail Archive: IPP>PRO comments on CPAP

IPP>PRO comments on CPAP

Robert Herriot (Robert.Herriot@Eng.Sun.COM)
Thu, 8 May 1997 18:09:05 -0700

I just read over the CPAP spec (a March 1992 version).

I am making a few comments to help with a discussion before the meeting
next week.

In CPAP a client opens a connection (e.g TCP/IP) and sends a series
of operations. The syntax for CPAP (simplified) is:
Integer-opcode Sequence-Number Length blank Data

The Data may be raw data (e.g. document data) or a sequence of
attributes in the form: name=string-value^A (control A ends each value.
The send-data operation sends raw data. Most of the other operations
send attributes.

A typical session is (from the CPAP document) with each operation
explicity named:

client action server action
create circuit
accept circuit
start session
reply
identify user
start document
reply
open circuit returned
accept circuit
send data
disconnect circuit
end document

< repeat from start document above for more documents >

end of job
reply
<repeat of above >
disconnect circuit

There are many operations and they include ones for management.

I like some ideas and not others in CPAP.

On the downside CPAP opens a new circuit for sending document data for
each document (for Level II). Level I does not, but the document advises
the use of Level II. This seems to have all the HTTP problems of too much
TCP build/ tear-down traffic.

On the good side, CPAP looks slightly more compact because of its
integer opcode and length. But the biggest savings in terms of
processing may be that the server knows that the operations are
in the context of the session and doesn't have to re-establish context
with each operation. For example, out SendJob currently contains
the job-URL. This seems redundant if the server knows from the preceding
CreateJob what job it is expecting to receive data.

My take is that there are some good ideas in CPAP that are worth
using, but I wonder if the PWG wants to take it as a whole.

Bob Herriot