RFC 3995 - Internet Printing Protocol (IPP): Event Notificat(4)

时间:2006-10-31 来源: 作者: 点击:
-aPrinterEvent,thePrinterMUSTusetheattributeNinthe activeJob. IfaPrintersupportsthisattributeandaSubscriptionObject containsthisattributeandtheDeliveryMethodgeneratesaMachine ConsumableEventNotificat
  

      -  a Printer Event, the Printer MUST use the attribute N in the
         active Job.

   If a Printer supports this attribute and a Subscription Object
   contains this attribute and the Delivery Method generates a Machine
   Consumable Event Notification, the Printer MUST include in each Event
   Notification:

   a) the attributes specified in section 9.1 and

   b) each attribute named by this attribute.

   The Printer MUST NOT use this attribute to generate a Human
   Consumable Event Notification.

5.3.4.1.  notify-attributes-supported (1setOf type2 keyword)

   See sections 5.1 and 5.2 for the behavior of "xxx-supported"
   Subscription Template Printer attributes.

5.3.5.  notify-user-data (octetString(63))

   This attribute contains opaque data that some Delivery Methods
   include in each Machine Consumable Event Notification.  The opaque
   data might contain, for example:

   -  the identity of the Subscriber

   -  a path or index to some Subscriber information

   -  a key that identifies to the Notification Recipient the ultimate
      recipient of the Event Notification

   -  the id for a Notification Recipient that had previously registered
      with an Instant Messaging Service

   A Printer MUST support this attribute.

   A client MAY supply this attribute in a Subscription Creation
   Operation.  If the client does not supply this attribute in the
   Subscription Creation Operation, the Subscription Object either (1)
   MAY contain the "notify-user-data" attribute with a zero length value
   or (2) NEED NOT contain the attribute at all.  There is no "notify-
   user-data-default" Printer attribute.

   There is no "notify-user-data-supported" Printer attribute.  Rather,
   any octetString whose length does not exceed 63 octets is a supported
   value.  If the length exceeds 63 octets, the Printer MUST treat it as
   an unsupported value.

5.3.6.  notify-charset (charset)

   This attribute specifies the charset to be used in the Event
   Notification content sent to the Notification Recipient, whether the
   Event Notification content is Machine Consumable or Human Consumable.

   A Printer MUST support this attribute.

   A client MAY supply this attribute in a Subscription Creation
   Operation.  If the client does not supply this attribute in
   Subscription Creation Operation or supplies an unsupported value, the
   Printer MUST populate this attribute in the Subscription Object with
   the value of the "attributes-charset" operation attribute, which is a
   REQUIRED attribute in all IPP requests (see [RFC2911]).  If the value
   of the "attributes-charset" attribute is unsupported, the Printer
   MUST populate this attribute in the Subscription Object with the
   value of the Printer’s "charset-configured" attribute.  There is no
   "notify-charset-default" Printer attribute.

   The value of this attribute on a Subscription Object MUST be a value
   of the "charset-supported (1setOf charset)" Printer attribute.

5.3.7.  notify-natural-language (naturalLanguage)

   This attribute specifies the natural language to be used in any human
   consumable text in the Event Notification content sent to the
   Notification Recipient, whether the Event Notification content is
   Machine Consumable or Human Consumable.

   A Printer MUST support this attribute.

   A client MAY supply this attribute in a Subscription Creation
   Operation.  If the client does not supply this attribute in
   Subscription Creation Operation or supplies an unsupported value, the
   Printer MUST populate this attribute in the Subscription Object with
   the value of the "attributes-natural-language" operation attribute,
   which is a REQUIRED attribute in all IPP requests (see [RFC2911]
   section 3.1.4).  If the value of the "attributes-natural-language"
   attribute is unsupported, the Printer MUST populate this attribute in
   the Subscription Object with the value of the Printer’s "natural-
   language-configured" attribute (see [RFC2911] section 4.4.19).  There
   is no "notify-natural-language-default" Printer attribute.

   The value of this attribute on a Subscription Object MUST be a value
   of the "generated-natural-language-supported (1setOf type2
   naturalLanguage)" Printer attribute (see [RFC2911] section 4.4.20).

5.3.8.  notify-lease-duration (integer(0:67108863))

   This attribute specifies the duration of the lease (in seconds)
   associated with the Per-Printer Subscription Object at the time the
   Subscription Object was created or the lease was renewed.  The
   duration of the lease is infinite if the value is 0, i.e., the lease
   never expires.  See section 5.4.3 on "notify-lease-expiration-time
   (integer(0:MAX))" for more details.

   This attribute is not present on a Per-Job Subscription Object
   because the Subscription Object lasts exactly as long as the
   associated Job object.  See discussion of the ’job-completed’ event
   in section 5.3.3.4.3 about retention of the Job object after
   completion.

   A Printer MUST support this attribute.

   For a Subscription Object Creation operation of a Per-Job
   Subscription Object, the client MUST NOT supply this attribute.  If
   the client does supply this attribute, the Printer MUST treat it as
   an unsupported attribute.

   For a Subscription Creation Operation of a Per-Printer Subscription
   Object or a Renew-Subscription operation, a client MAY supply this
   attribute.  If the client does not supply this attribute, the Printer
   MUST populate this attribute with its "notify-lease-duration-default"
   (0:67108863) attribute value.  If the client supplies this attribute
   with an unsupported value, the Printer MUST populate this attribute
   with a supported value, and this value SHOULD be as close as possible
   to the value requested by the client.  Note: this rule implies that a
   Printer doesn’t assign the value of 0 (infinite) unless the client
   requests it.

   After the Printer has populated this attribute with a supported
   value, the value represents the "granted duration" of the lease in
   seconds and the Printer updates the value of the Subscription
   Object’s "notify-lease-expiration-time" attribute as specified in
   section 5.4.3.

   The value of this attribute on a Subscription Object MUST be a value
   of the "notify-lease-duration-supported" (1setOf (integer(0:67108863)
   | rangeOfInteger(0:67108863))) Printer attribute.

   A Printer MAY require authentication in order to return the value of
   0 (the lease never expires) as one of the values of "notify-lease-
   duration-supported", and to allow 0 as a value of the "notify-lease-
   duration" attribute.

   Note:  The maximum value 67,108,863 is 2 raised to the 26 power minus
   1 and is about 2 years in seconds.  The value is considerably less
   than MAX so that there is virtually no chance of an overflow when the
   Printer adds it to the Printer’s "printer-up-time" attribute value
   (see [RFC2911] section 4.4.29) to produce the "notify-lease-
   expiration-time" Subscription Description attribute value (see
   section 5.4.3).

5.3.8.1.  notify-lease-duration-default (integer(0:67108863))

   See sections 5.1 and 5.2 for the behavior of "xxx-default"
   Subscription Template Printer attributes.

5.3.8.2. notify-lease-duration-supported (1setOf (integer(0: 67108863) |
         rangeOfInteger(0:67108863)))

   See sections 5.1 and 5.2 for the behavior of "xxx-supported"
   Subscription Template Printer attributes.

5.3.9.  notify-time-interval (integer(0:MAX))

   The ’job-progress’ Event occurs each time that a Printer completes a
   sheet.  Some Notification Recipients do not want to receive an Event
   Notification every time this Event occurs.  This attribute allows a
   Subscribing Client to request how often it wants to receive Event
   Notifications for ’job-progress’ Events.  The value of this attribute
   MAY be any nonnegative integer (0,MAX) indicating the minimum number
   of seconds between ’job-progress’ Event Notifications.

   The Printer MUST support this attribute if and only if the Printer
   supports the ’job-progress’ Event.

   A client MAY supply this attribute in a Subscription Creation
   Operation.  If the client does not supply this attribute in the
   Subscription Creation Operation, the Subscription Object either (1)
   MAY contain the "notify-time-interval" attribute with a ’0’ value or
   (2) NEED NOT contain this attribute at all.  There is no "notify-
   time-interval-default" Printer attribute.

   There is no "notify-time-interval-supported" Printer attribute.

   If the ’job-progress’ Event occurs and a Subscription Object contains
   the ’job-progress’ Event as a value of the ’notify-events’ attribute,
   there are two cases to consider:

   1. This attribute is not present on the Subscription Object or has
      the value of 0.  The Printer MUST generate and deliver an Event
      Notification (as is the case with other Events).

   2. This attribute is present with a nonzero value of N:

      a) If the Printer has not sent an Event Notification for the
         ’job-progress’ Event for the associated Subscription Object
         within the past N seconds, the Printer MUST deliver an Event
         Notification for the Event that just occurred.  Note when the
         Printer completes the first page of a Job, this rule implies
         that the Printer delivers an Event Notification for a Per-Job
         Subscription Object.

      b) Otherwise, the Printer MUST NOT generate or deliver an Event
         Notification for the associated Subscription Object.  The
         Printer MUST NOT increase the value of the "notify-sequence-
         number" Subscription Object attribute (i.e., the sequence of
         values of the "notify-sequence-number" attribute counts the
         Event Notifications that the Printer sent and not the Events
         that do not cause an Event Notification to be sent).

   It is RECOMMENDED that a Subscribing Client use this attribute when
   it subscribes to the ’job-progress’ Event, and that the value be
   sufficiently large to limit the frequency with which the Printer
   delivers Event Notifications requests.

   This attribute MUST NOT effect any Events other than ’job-progress’.

5.4.  Subscription Description Attributes

   Subscription Description Attributes are those attributes that a
   Printer adds to a Subscription Object at the time of its creation.

   A Printer MUST support all attributes in this Table 2.

   A client MUST NOT supply the attributes in Table 2 in a Subscription
   Template Attributes Group of a Subscription Creation Operation.
   There are no corresponding default or supported attributes.

   Table 2 - Subscription Description Attributes

      Subscription Object attributes:

      notify-subscription-id (integer(1:MAX))
      notify-sequence-number (integer(0:MAX))
      notify-lease-expiration-time (integer(0:MAX))
      notify-printer-up-time (integer(1:MAX))
      notify-printer-uri (uri)
      notify-job-id (integer(1:MAX))
      notify-subscriber-user-name (name(MAX))

5.4.1.  notify-subscription-id  (integer (1:MAX))

   This attribute identifies a Subscription Object instance with a
   number that is unique within the context of the Printer.  The Printer
   generates this value at the time it creates the Subscription Object.

   A Printer MUST support this attribute.

   The Printer MAY assign the value of this attribute sequentially as it
   creates Subscription Objects.  However, if there is no security on
   Subscription objects, sequential assignment exposes the system to a
   passive traffic monitoring threat.

   The Printer SHOULD avoid re-using recent values of this attribute
   during continuous operation of the Printer as well as across power
   cycles.  Then a Subscribing Client is unlikely to find that a stale
   reference accesses a new Subscription Object.

   The 0 value is not permitted in order to allow for compatibility with
   "job-id" and with MIB table index values, which are recommended not
   to be 0.

5.4.2.  notify-sequence-number (integer (0:MAX))

   The value of this attribute indicates the number of times that the
   Printer has generated and attempted to deliver an Event Notification
   for this Subscription object.  When an Event Notification contains
   this attribute, the Notification Recipient can determine whether it
   missed some Event Notifications (i.e., numbers skipped) or received
   duplicates (i.e., same number twice).

   A Printer MUST support this attribute.

   When the Printer creates a Subscription Object, it MUST populate this
   attribute with a value of 0.  This value indicates that the Printer
   has not sent any Event Notifications for this Subscription Object.

   Each time the Printer delivers a newly generated Event Notification,
   it MUST increase the value of this attribute by 1.  For some Delivery
   Methods, the Printer MUST include this attribute in each Event
   Notification, and the value MUST be the value after it is increased
   by 1.  That is, the value of this attribute in the first Event
   Notification after Subscription object creation MUST be 1, the second
   MUST be 2, etc.  If a Delivery Method is defined such that the
   Notification Recipient returns a response, the Printer can re-try
   delivering an Event Notification a certain number of times with the
   same sequence number when the Notification Recipient fails to return
   a response.

   If a Subscription Object lasts long enough to reach the value of MAX,
   its next value MUST be 0, i.e., it wraps.

5.4.3.  notify-lease-expiration-time (integer(0:MAX))

   This attribute specifies the time in the future when the lease on the
   Per-Printer Subscription Object will expire, i.e., the "printer-up-
   time" value at which the lease will expire.  If the value is 0, the
   lease never expires.

   A Printer MUST support this attribute.

   When the Printer creates a Per-Job Subscription Object, this
   attribute MUST NOT be present - the Subscription Object lasts exactly
   as long as the associated Job object.  See also the discussion of the
   ’job-completed’ event in section 5.3.3.4.3 about retention of the Job
   object after completion so that a Notification Recipient can query
   the Job object after receiving the ’job-completed’ Event
   Notification.

   When the Printer creates a Per-Printer Subscription Object, it
   populates this attribute with a value that is the sum of the values
   of the Printer’s "printer-up-time" attribute and the Subscription
   Object’s "notify-lease-duration" attribute with the following
   exception.  If the value of the Subscription Object’s "notify-lease-
   duration" attribute is 0 (i.e., no expiration time), then the value
   of this attribute MUST be set to 0 (i.e., no expiration time).

   When the Printer powers up, it MUST populate this attribute in each
   persistent Subscription Object with a value using the algorithm in
   the previous paragraph.

   When the "printer-up-time" equals the value of this attribute, the
   Printer MUST delete the Subscription Object.  A client can extend a
   lease of a Per-Printer Subscription Object with the Renew-
   Subscription operation (see section 11.2.6).

   Note: In order to compute the number of seconds remaining in a lease
   for a Per-Printer Subscription Object, a client can subtract the
   Subscription’s "notify-printer-up-time" attribute (see section 5.4.4)
   from the Subscription’s "notify-lease-expiration-time" attribute.

5.4.4.  notify-printer-up-time (integer(1:MAX))

   This attribute is an alias for the Printer’s "printer-up-time"
   attribute " (see [RFC2911] section 4.4.29).  In other words, when
   this attribute is queried with the Get-Subscriptions or Get-
   Subscription-Attributes operations (see sections 11.2.4 and 11.2.5),
   the value returned is the current value of the Printer’s "printer-
   up-time" attribute, rather than the time at which the Subscription
   Object was created.

   A Printer MUST support this attribute.

   When the Printer creates a Per-Job Subscription Object, this
   attribute MUST NOT be present.  When the Printer creates a Per-
   Printer Subscription Object, this attribute MUST be present.

   Note: this attribute exists in a Per-Printer Subscription Object so
   that a client using the Get-Subscription-Attributes or Get-
   Subscription operations can convert the Per-Printer Subscription’s
   "notify-lease-expiration-time" attribute to wall clock time with one
   request.  If the value of the "notify-lease-expiration-time"
   attribute is not 0 (i.e., no expiration time), then the difference
   between the "notify-lease-expiration-time" attribute and the
   "notify-printer-up-time" is the remaining number of seconds on the
   lease from the current time.

5.4.5.  notify-printer-uri (uri)

   This attribute identifies the Printer object that created this
   Subscription Object.

   A Printer MUST support this attribute.

   During a Subscription Creation Operation, the Printer MUST populate
   this attribute with the value of the "printer-uri" operation
   attribute in the request.  From the Printer URI, the client can, for
   example, determine what security scheme was used.

5.4.6.  notify-job-id (integer(1:MAX))

   This attribute specifies whether the containing Subscription Object
   is a Per-Job or Per-Printer Subscription Object, and for Per-Job
   Subscription Objects, it specifies the associated Job.

   A Printer MUST support this attribute.

   If this attribute is not present, the Subscription Object MUST be a
   Per-Printer Subscription.  If this attribute is present, the
   Subscription Object MUST be a Per-Job Subscription Object and this
   attribute MUST identify the Job with which the Subscription Object is
   associated.

   Note: This attribute could be useful to a Notification Recipient that
   receives an Event Notification generated from a Per-Job Subscription
   Object and caused by a Printer Event.  The Event Notification gives
   access to the Printer and the Subscription Object.  The Event
   Notification gives access to the associated Job only via this
   attribute.  See discussion of the ’job-completed’ event in section
   5.3.3.4.3 about retention of the Job object after completion so that
   a Notification Recipient can query the Job object after receiving the
   ’job-completed’ Event Notification.

5.4.7.  notify-subscriber-user-name (name(MAX))

   This attribute contains the name of the user who performed the
   Subscription Creation Operation.

   A Printer MUST support this attribute.

   The Printer MUST populates this attribute with the most authenticated
   printable name that it can obtain from the authentication service
   over which the Subscription Creation Operation was received.  The
   Printer uses the same mechanism for determining the value of this
   attribute as it does for a Job’s "job-originating-user-name" (see
   [RFC2911] section 4.3.6).

   Note:  To help with authentication, a Subscription Object may have
   additional private attributes about the user, e.g., a credential of a
   principal.  Such private attributes are implementation-dependent and
   not defined in this document.

6.  Printer Description Attributes Related to Notification

   This section defines the Printer Description attributes that are
   related to Notification.  Table 3 lists the Printer Description
   attributes, indicates the Printer support required for conformance,
   and whether or not the attribute is READ-ONLY (see section 3.1):

   Table 3 - Printer Description Attributes Associated with Notification

   Printer object attributes:                   REQUIRED     READ-ONLY

   printer-state-change-time (integer(1:MAX))   No           Yes
   printer-state-change-date-time (dateTime)    No           Yes

6.1.  printer-state-change-time (integer(1:MAX))

   This OPTIONAL attribute records the most recent time at which the
   ’printer-state-changed’ Printer Event occurred whether or not any
   Subscription objects were listening for this event.  This attribute
   helps a client or operator to determine how long the Printer has been
   in its current state.

   A Printer MAY support this attribute and if so, the attribute MUST be
   READ-ONLY.

   On power-up, the Printer MUST populate this attribute with the value
   of its "printer-up-time" attribute, so that it always has a value.
   Whenever the ’printer-state-changed’ Printer Event occurs, the
   Printer MUST update this attribute with the value of the Printer’s
   "printer-up-time" attribute.

6.2.  printer-state-change-date-time (dateTime)

   This OPTIONAL attribute records the most recent time at which the
   ’printer-state-changed’ Printer Event occurred whether or not there
   were any Subscription Objects listening for this event.  This
   attribute helps a client or operator to determine how long the
   Printer has been in its current state.

   A Printer MAY support this attribute and if so, the attribute MUST be
   READ-ONLY.

   On power-up, the Printer MUST populate this attribute with the value
   of its "printer-current-time" attribute, so that it always has a
   value (see [RFC2911] section 4.4.30 on "printer-current-time").
   Whenever the ’printer-state-changed’ Printer Event occurs, the
   Printer MUST update this attribute with the value of the Printer’s
   "printer-current-time" attribute.

7.  New Values for Existing Printer Description Attributes

   This section contains those attributes for which additional values
   are added.

7.1.  operations-supported (1setOf type2 enum)

   The following "operation-id" values are added in order to support the
   new operations defined in this document:

   Table 4 - Operation-id assignments

   Value       Operation Name

   0x0016      Create-Printer-Subscriptions
   0x0017      Create-Job-Subscriptions
   0x0018      Get-Subscription-Attributes
   0x0019      Get-Subscriptions
   0x001A      Renew-Subscription
   0x001B      Cancel-Subscription

8.  Attributes Only in Event Notifications

   This section contains those attributes that exist only in Event
   Notifications and do not exist in any objects.

8.1.  notify-subscribed-event (type2 keyword)

   This attribute indicates the Subscribed Event that caused the Printer
   to deliver this Event Notification.  This attribute exists only in
   Event Notifications.

   This attribute MUST contain one of the values of the "notify-events"
   attribute in the Subscription Object, i.e., one of the Subscribed
   Event values.  Its value is the Subscribed Event that "matches" the
   Event that caused the Printer to deliver this Event Notification.
   This Subscribed Event value may be identical to the Event or the
   Event may be a sub-value of the Subscribed Event.  For example, the
   ’job-completed’ Event (which is a sub-event of the ’job-state-
   changed’ event) would cause the Printer to deliver an Event
   Notification for either the ’job-completed’ or ’job-state-changed’
   Subscribed Events and to deliver the ’job-completed’ or ’job-state-
   changed’ value for this attribute, respectively.  See section 5.3.3.5
   for the "matching" rules of Subscribed Events and for additional
   examples.

   The Delivery Method Document specifies whether the Printer includes
   the value of this attribute in an Event Notification.

8.2.  notify-text (text(MAX))

   This attribute contains a Human Consumable text message (see section
   9.2).  This message describes the Event and is encoded as plain text,
   i.e., ’text/plain’ with the charset specified by Subscription
   Object’s "notify-charset" attribute.

   Note: this attribute contains a text message only and must not
   contain any encoding information, such as ’text/plain’.  The
   ’text/plain’ encoding is implicit and thus the charset must be
   specified by an alternate mechanism, namely the "notify-charset"
   attribute.

   The Delivery Method Document specifies whether the Printer includes
   this attribute in an Event Notification.

9.  Event Notification Content

   This section defines the Event Notification content that the Printer
   delivers when an Event occurs.

   When an Event occurs, the Printer MUST find each Subscription object
   whose "notify-events" attribute "matches" the Event.  See section
   5.3.3.5 for details on "matching".  For each matched Subscription
   Object, the Printer MUST create an Event Notification with the
   content and format that the Delivery Method Document specifies.  The
   content contains the value of attributes specified by the Delivery
   Method Document.  The Printer obtains the values immediately after
   the Event occurs.  For example, if the "printer-state" attribute
   changes from ’idle’ to ’processing’, the Event ’printer-state-
   changed’ occurs and the Printer puts various attributes into the
   Event Notification, including "printer-up-time" and "printer-state"
   with the values that they have immediately after the Event occurs,
   i.e., the value of  "printer-state" is ’processing’.

   Event Notification Ordering:

   When a Printer delivers Event Notifications, the Event Notifications
   from any given Subscription Object MUST be in time stamp order, i.e.,
   in order of increasing "printer-up-time" attribute value in the Event
   Notification (see Table 5).  These Event Notifications MAY be
   interleaved with those from other Subscription Objects, as long as
   those others are also in time stamp order.  The Printer MUST observe
   these ordering requirements whether delivering multiple pending
   Events as multiple separate Event Notifications or together in a
   single Compound Event Notification.

   If a Subscribing Client wants the Printer to deliver certain Event
   Notifications in time stamp order, the Subscribing Client uses a
   single Subscription Object.  Even so, depending on the underlying
------分隔线----------------------------
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容