Next in thread → Next in month →

Re: [REL-94] Amended Poll Reply Pattern Binding Proposal

From
Sunil Kunisetty <>
Date
2003-10-28T21:41:46+00:00
ID
Thread
Re: [REL-94] Amended Poll Reply Pattern Binding Proposal
All -

 The group agreed to accept the proposal with one change:

        - Move the "request for
poll" into a new Header rather than

          overloading
"AckRequested".

 Here is a final proposal for REL-94 with the required changes.

  <Rel94ProposalBegin/>

  So the initial msg. with the intent for Poll ReplyPattern Binding
will have

  ReplyPattern set to Poll and it will have AckRequested sub-element

 

   <MessageHeader>

      ....

      <ReplyPattern>Poll</ReplyPattern>

   </MessageHeader>

   <Request>

       <AckRequested/>

     ...

  </Request>

 The poll request will have a new Header called PollRequest.

 An example is as follows:

   <PollRequest>

         <GroupId value="a.b.c.com/xyz/001"
>

           
<SequenceNumberRange From="1" To="10" />

        </GroupId>

        <GroupId value="a.b.c.com/xyz/002"
/>

   </PollRequest>

 Specifics:

Intent for Poll pattern is done using ReplyPattern set to Poll and existence
of the AckRequested sub-element in Request Header.

Actual Poll request will be sent in a  separate Header called PollRequest

PollRequest Header could be the one of  following:

If it has one or more GroupId sub-elements, then it is a indication that 
sender wants to Poll previously sent message(s).

If it has one or more GroupId sub-elements, then <DuplicateElimination>
and <MessageOrder> should not exist and if exists are ignored.

There can be zero or more GroupId sub-elements.

Values can be same.

There can be zero or more SequenceNumberRange sub-elements under a GroupId.

If there is no SequenceNumberRange sub-element, Response should include
all received messages in that Group.

For Poll Request, it should only have MessageHeader and PollRequest Header.
It shouldn't have the Request Header. So essentially one can't Ack a Poll
request. No useful use case to support it.

For simplicity sake, we should mandate that all the messages in a group
should use the same ReplyPattern.

The Response for a Poll request will have a MessageHeader and the ReplyPattern
sub-element will be set to Poll. [The group agreed to generalize the
rule  for all patterns].

 So possible requests are (assume ReplyPattern is Poll for all the
below):

 1)  <PollRequest>

        <GroupId value="a.b.c.com/xyz/001"
>

           
<SequenceNumberRange From="1" To="12" />

        </GroupId>

     </PollRequest>

 2) <PollRequest>

        <GroupId value="a.b.c.com/xyz/001"
>

           
<SequenceNumberRange From="1" To="5" />

           
<SequenceNumberRange From="7" To="7" />

            
<SequenceNumberRange From="10" To="12" />

        </GroupId>

   </PollRequest>

 3) <PollRequest>

        <GroupId value="a.b.c.com/xyz/001"
>

           
<SequenceNumberRange From="1" To="5" />

        </GroupId>

        <GroupId value="a.b.c.com/xyz/001"
>

           
<SequenceNumberRange From="6" To="12" />

        </GroupId>

   </PollRequest>

 While all the 3 cases are valid, (1) will be the most efficient
and should be recommended.

 And the receiver is REQUIRED to send back requested Acks for message(s)
that were

 received already.

 Note that the Response will include all received messages in the
range mentioned in

 the  Request, not just previously un-acked messages.

 <Response>

     <RefToGroupId value="a.b.c.com/xyz/001">

         <RefToSequenceNumberRange
From="1" To="5" />

         <RefToSequenceNumberRange
From="7" To="7" />

        <RefToSequenceNumberRange
From="10" To="12 />

   </RefToGroupId>

   <RefToGroupId value="a.b.c.com/xyz/002">

         <RefToSequenceNumberRange
From="1" To="8" />

   </RefToGroupId>

 </Response>

 It was also decided to use the same syntax for bataching acks
in

 Callback pattern case. [REL 75]

 Tdibits:

  1.This request will be sent to the same endpoint as the original
message(s) are sent..

  2.Poll request for a message sent to another endpoint MAY result
in InvalidGroupId fault.

  3.Since it is defined as a Header, it could be defined in the
SOAP Binding part in the

     if desired.

 Possible failure faultcodes are:

  1.InvalidGroupId:  Even if one of the GroupIds are wrong
or invalid, this fault will be sent.

  2.InvalidSequenceNumber: Even if one of the SequenceNumbers
is wrong or invalid,

     this fault will be generated and sent.

  3.InvalidRMRequest: If the AckRequested element has one or more
child elements for

     Response or Callback poll pattern.  Or,
if there is some mis-match of ReplyPatten

     types for the messages in the same group.

 Essentially, all or none approach wrt to Faults. We should be
able to share the above

 Status values with Fault  Codes. Note both  are QNAME
types and hence shareable.

 Piggybacking of a Poll request could either be disallowed or should
be tackled along

 with the general piggybacking problem.

 <ProposalEnd/>

 

 -Sunil
Next in thread → Next in month →