1.1 Device object
The OPTIONAL Device object models the physical output device that an IPP
Printer object logically represents. The purpose of the Device object is to
model those operations and attributes that are closely tied to the physical
device (see [ipp-mod] section 2.1). A Get-Device-Attributes operations
returns Device objects as specified in the "requested-attributes" supplied
by the client.
An IPP Printer object is associated with exactly one Device object, as
specified by the Printer's "associated-devices" (name(127)) attribute. A
Device object is associated with one or more Printer objects as specified by
the Device's "associated-printers" (1setOf name(127)). If the Device object
is associated with more than one Printer object, the configuration is
referred to as "fan-in". Such a configuration can be used to offer
different classes of service, including differing capabilities and/or
defaults, for each Printer object with possibly differing access control.
While not explicitly provided in IPP/1.1 [ipp-mod], fan-in is not precluded
by the IPP/1.1 semantics.
If an IPP Printer object is supporting more than one output device, such a
configuration is called "fan-out" (see [ipp-mod] section 2.1). In order to
represent a fan-out configuration, the [ipp-set2] specification REQUIRES
that the IPP Printer object be a "parent" Printer object that supports two
or more subordinate Printer objects, one for each device (see [ipp-set2]).
Such a parent Printer object MUST NOT have an associated Device object.
Only the subordinate Printer objects MAY have associated Device objects.
Thus the figures in [ipp-mod] should be re-drawn to show the parent Printer
object, multiple subordinate Printer objects and their associated Device
objects.
Legend:
----> indicates a network protocol with the direction of its requests
##### indicates a Printer object which is either
embedded in an output device or is
hosted in a server. The Printer object
might or might not be capable of queuing/spooling.
***** indicates a Device object which is either
embedded in a output device or is
hosted in a server.
..... indicates an association between Printer and Device objects
any indicates any network protocol or direct
connect, including IPP
embedded Printer and Device objects:
output device
+----------------------------+
O +--------+ | ########### ********** |
/|\ | client |------------IPP-------------># Printer #...* Device * |
/ \ +--------+ | # Object # * object * |
| ########### ********** |
+----------------------------+
hosted Printer and Device objects:
server
+---------------------------+
O +--------+ | ########### ********** | +--------+
/|\ | client |--IPP--># Printer #...* Device * |-any->| output |
/ \ +--------+ | # object # * object * | | device |
| ########### ********** | +--------+
+---------------------------+
output device
+----------------------------+
| ########### ********** |
fan out: server +----># subord. # * Device * |
+-------------+ / | # Printer #...* object * |
| ########### | any | # object # ********** |
O +--------+ | # parent # | / | ########### |
/|\ | client |-IPP-># Printer #--* +----------------------------+
/ \ +--------+ | # object # | \ +----------------------------+
| ########### | any | ########### ********** |
+-------------+ \ | # subord. # * Device * |
+----># Printer #...* object * |
| # object # ********** |
| ########### |
+----------------------------+
output device
server
fan in: +-------------+
| ########### |
+---># Printer #.....
/ | # object # | .
IPP | ########### | . output device
O +--------+ / | | . +--------+
/|\ | client |--+ | | ...| Device |
/ \ +--------+ \ | | . | object |
IPP | ########### | . +--------+
\ | # Printer # | .
+---># object #.....
| ########### |
+-------------+
Figure 1 - Embedded, hosted, fan-out, and fan-in configurations
Note: the addition of subordinate Printer objects and the Device object is
completely compatible with IPP/1.0 and IPP/1.1. The protocol and semantics
are the same between a client and a Printer object for all configurations.