IPP Mail Archive: RE: IPP> ippget Design Needs Work [use mul

RE: IPP> ippget Design Needs Work [use multi-part/related?]

From: Marty Joel (mjoel@netreon.com)
Date: Wed Jul 25 2001 - 12:47:42 EDT

  • Next message: Bergman, Ron: "IPP> Change to Media Size Tables"

    Hi Tom,

    For your issue 1 below, I don't know that those are the only 2 options.
    For the case in which there are no longer any subscriptions matching the
    Get-Notifications request, I thought we were going to return
    client-error-not-found. The only other case I can think of is where the
    printer wants to end wait mode, in which it can return server-error-busy
    with a notify-get-interval. This would also cover your issue 2 below.

    Regards,

    Marty

    "Hastings, Tom N" <hastings@cp10.es.xerox.com>@pwg.org on 07/24/2001
    03:31:06 PM

    Sent by: owner-ipp@pwg.org

    To: Michael Sweet <mike@easysw.com>
    cc: mjoel@netreon.com, ipp@pwg.org

    Subject: RE: IPP> ippget Design Needs Work [use multi-part/related?]

    I think we are getting close to agreement. Three issues:

    1. How Printer indicates that this is the last Get-Notifications response
    in
    Event Wait Mode?

    Proposal a: return a new 'successful-ok-subscription-expired' (and if
    there
    are any unexpired Events, return them as separate Event Notification
    Attributes Groups).

    Proposal b: return the "notify-get-interval" (MAX) operation attribute,
    i.e., with the maximum positive integer value, meaning that more events
    won't "ever" happen.

    (A new tag does appear to have a real disadvantage with existing IPP
    operation response parsers).

    If we do a, then we also need to specify the precedence, if there are other
    successful ok status codes, such as
    'successful-ok-ignored-or-substituted-attributes' in case the client passed
    an operation attribute that the Printer didn't support (possibly an
    extension in the future to a current Printer). Since the Unsupported
    Attributes Group would have the unsupported attributes or values, perhaps
    returning the 'successful-ok-subscription-expired' wouldn't be too much of
    a
    problem.

    2. Shouldn't we REQUIRE a Printer to return a final Get-Notifications
    response (with on of the above indications: a or bb) to all waiting clients
    when the Subscription object is canceled by a Cancel-Subscription operation
    or because the Per-Printer Subscription Object lease expires?

    3. Ok that whether the client actually disconnects on any return from
    Get-Notifications is up to the client, as with all IPP operations. If the
    Printer wants to, the Printer can disconnect whenever it wants to as well
    (but sufficiently much after any response, that the response isn't lost).

    Tom

    -----Original Message-----
    From: Michael Sweet [mailto:mike@easysw.com]
    Sent: Tuesday, July 24, 2001 05:21
    To: Hastings, Tom N
    Cc: mjoel@netreon.com; ipp@pwg.org
    Subject: Re: IPP> ippget Design Needs Work [use multi-part/related?]

    "Hastings, Tom N" wrote:
    > ...
    > This will work, although it won't indicate if the subscription has run
    > out or just been cancelled,
    > TH> But won't it be harder for the Printer to be able to detect the
    > difference when performing a Get-Notifications, to detect whether the
    reason
    > that the Printer can't find any Subscription Objects, is because they
    were:
    > ...

    MS> The new status code would only be returned when there are events
    (i.e.
    the subscription exists), but the current response contains all that are
    left and the subscription is then completed.

    To clarify: Get-Notifications will return the
    "successful-ok-subscription-expired" status for any Get-Notifications
    request when 1) the subscription still exists, and 2) the response
    contains all of the remaining events for that subscription (and no
    more events can be retrieved because the subscription has expired).

    If the client calls a second time, ignoring the new status code, then
    it will get the client-error-not-found status code, same as before.

    We just use the new status code to indicate to the client that it has
    retrieved all events for the specified subscription, and can it please
    stop bothering the server? :)

    I prefer a new status code to a "super-end-tag"; using a new tag will
    break existing implementations and will require changes to everyone's
    IPP message parsing code. The only advantage is that you can look for
    a byte that indicates the end of the notifications, but I don't think
    caching the last status code you saw at the beginning of the last
    event message is all that difficult, either...

    > ...
    > TH> I think that for the Event No Wait case, if the Printer doesn't
    return
    > the "notify-get-interval" at all, that is the indication for the client
    not
    > to ask again. Right?

    Then will the "notify-get-interval" attribute be required if the server
    wants the client to ask again? Won't that break any existing
    implementations?

    > ...
    > TH> This status code could be used with either the Event No Wait or Event
    > Wait case? But it may still be hard for a Printer to distinguish that
    the
    > Subscription Objects had expired (been canceled) from the case when the
    > client supplied either a subscription-id or a url that didn't exist which
    we
    > currently specify as returning the 'client-error-not-found'.

    MS> The logic would go something like this: Get-Notifications initially
    returns client-error-not-found if the subscription object cannot be
    found. If the subscription object is found, it returns successful-ok
    with each intermediate set of events and
    successful-ok-subscription-expired
    for the terminal events. For the wait case, if the subscription is
    cancelled while a Get-Notifications operation is active, a final part
    with the client-error-not-found status code is returned and the
    request is completed.

    > ...
    > TH> And how hard is it for the Printer to detect that case of clients
    > waiting when a Subscription object disappears? Perhaps, the
    implementation
    > keeps an internal list of waiting clients for each Subscription object so
    > that it can tell this case when the Subscription object disappears and
    > return the special 'successful-ok-subscription-expired' status code to
    each
    > waiting client.

    Well, if a client is waiting for more parts, then the server knows
    it has N clients connected to send the notifications to. If the
    subscription expires with no client connected, the server has to
    keep the expired subscription around for N seconds (the value of
    begin-to-expire-time-interval) or until a client asks for the events.
    If the client asks before the events timeout, the server sends them
    to the client with the new status code. If the client doesn't ask
    in time, it sees client-error-not-found.

    --
    ______________________________________________________________________
    Michael Sweet, Easy Software Products                  mike@easysw.com
    Printing Software for UNIX                       http://www.easysw.com
    



    This archive was generated by hypermail 2b29 : Wed Jul 25 2001 - 12:52:28 EDT