← Prev in month ← Prev in thread

i019 - Proposal #5

From
Doug Davis <>
Date
2005-09-06T00:04:54+00:00
ID
Thread
i019 - Proposal #5
DougB proposed some good editoral fixes.  Picked
up the change about when Close should be used, removed the bit about InOrder+ExactlyOne
DA, and the typo he noticed.

thanks 

-DougD

__________________  

Using the pdf file at http://www.oasis-open.org/apps/org/workgroup/ws-rx/download.php/13493/WS-ReliableMessaging-v1.0-wd-01.pdf
 

here's the proposal:    

Change lines 340-347, the SeqAck syntax, to:  

<wsrm:SequenceAcknowledgement ...>   

  <wsrm:Identifier ...> xs:anyURI </wsrm:Identifier>
  

  [ [<wsrm:AcknowledgementRange ...  

      Upper="xs:unsignedLong"
  

      Lower="xs:unsignedLong"/>
+  

     <wsrm:Final/> ? ]  

  | <wsrm:Nack> xs:unsignedLong </wsrm:Nack>
+ ]   

  ...   

</wsrm:SequenceAcknowledgement>   

After line 378, add to the description of the SeqAck
elements:    

  /wsrm:SequenceAcknowledgement/wsrm:Final  
 

  This optional element, if present, indicates
that the RM     

  Destination is not accepting new messages for
the    

  specified Sequence.  The RM Source can
be assured that    

  the ranges of messages acknowledged by this
 

  SequenceAcknowledgement header block will not
change in the    

  future.  Any attempt to deliver additional
messages to this    

  sequence MUST generate a SequenceClosed fault
by the RM   

  Destination.  This element MUST be present
when the Sequence    

  is no longer accepting new message.  

  Note: this element MUST NOT be used when sending
a Nack, it    

  can only be used when sending AcknowledgementRanges.
  

On lines 569 and 570 change:  

  After an RM Source receives the <SequenceAcknowledgement>
    

  acknowledging the complete range of messages
in a Sequence, it

  sends a ... 

to    

  When the RM Source has completed its use of
the Sequence, it    

  sends a ...    

To the end of that para, at the end of line 574, add:
   

  Note, under normal usage the RM source will
complete its use of   

  the sequence when all of the messages in the
Sequence have been    

  acknowledged.  However, the RM Source
is free to Terminate    

  or Close a Sequence at any time regardless
of the acknowledgement    

  state of the messages.   

Change lines 581 and 582 from:  

  This element is sent by an RM Source after
it has received the     

  final <SequenceAcknowledgement> covering
the full range of a Sequence.    

to    

  This element is sent by an RM Source to indicate
it has completed

  its use of the Sequence, i.e. it will not attempt
to send any   

  additional application messages to the RM Destination.
 RM protocol   

  messages, e.g. AckRequested, CloseSequence
and TerminateSequence  

  may still be sent.   

After line 396, add a new section about closing a
Sequence:   

  3.6 Closing A Sequence    

  There may be times during the use of an RM
Sequence that the RM   

  Source or RM Destination will wish to discontinue
using a Sequence  

  even if some of the messages have not been
successfully delivered  

  to the RM Destination.   

  In the case where the RM Source wishes to discontinue
use of a 

  sequence, while it can send a TerminateSequence
to the RM Destination,    

  since this is a one-way message and due to
the possibility of late    

  arriving (or lost) messages and Acknowledgements,
this would leave    

  the RM Source unsure of the final ranges of
messages that were    

  successfully delivered to the RM Destination.
   

  To alleviate this, the RM Source can send a
<wsrm:CloseSequence> element,    

  in the body of a message, to the RM Destination
to indicate that    

  RM Destination MUST NOT accept any new application
messages for the    

  specified sequence, other than those already
received at the time 

  the <wsrm:CloseSequence> element is interpreted
by the RMD.  Upon receipt 

  of this message the RM Destination MUST send
a SequenceAcknowledgement   

  to the RM Source.  Note, this SequenceAcknowledgement
MUST include the   

  <wsrm:Final> element indicating that
the RM Destination will not accept   

  any new messages for this sequence. 

  While the RM Destination MUST NOT accept any
new application messages  

  it MUST still accept and process RM protocol
messages.  For example,   

  it MUST accept and respond to AckRequested,
TerminateSequence as well as   

  CloseSequence messages.  Note, subsequent
CloseSequence messages have no  

  effect on the state of the sequence. 

  In the case where the RM Destination wishes
to discontinue use of a

  sequence it may 'close' the sequence itself.  Please see wsrm:Final

  above and the Sequence Closed fault below. Note the SequenceClosed

  Fault SHOULD be used in place of the SequenceTerminated Fault, 

  whenever possible, to allow the RM Source to still receive 

  Acknowledgements.

  The following exemplar defines the CloseSequence
syntax:   

    <wsrm:CloseSequence wsrm:Identifier="xs:anyURI"/>
   

  /wsrm:CloseSequence  

  This element is sent by an RM Source to indicate
that the RM     

  Destination MUST NOT accept any new messages
for this sequence.   

  Any attempt to deliver additional messages
to this sequence    

  MUST generate a SequenceClosed fault by the
RM Destination.    

  /wsrm:CloseSequence@Identifier   

  This required attribute contains an absolute
URI conformant    

  with RFC2396 that uniquely identifies the sequence.
 

  /wsrm:CloseSequence/{any}    

  This is an extensibility mechanism to allow
different (extensible)    

  types of information, based on a schema, to
be passed.    

    

  /wsrm:CloseSequence@{any}  

  This is an extensibility mechanism to allow
additional attributes,     

  based on schemas, to be added to the element.
  

  A <wsrm:CloseSequenceResponse> is sent
in the body of a response message by     

  an RM Destination in response to receipt of
a <wsrm:CloseSequence> request  

  message.  It indicates that the RM Destination
has closed the   

  sequence.  

  The following exemplar defines the <wsrm:CloseSequenceResponse>
syntax:    

  /wsrm:CloseSequenceResponse  

  The element is sent in the body of a response
message by     

  an RM Destination in response to receipt of
a <wsrm:CloseSequence> request  

  message.  It indicates that the RM Destination
has closed the   

  sequence.  

  /wsrm:CloseSequenceResponse/{any}   

  This is an extensibility mechanism to allow
different (extensible)    

  types of information, based on a schema, to
be passed.    

    

  /wsrm:CloseSequenceResponse@{any}    

  This is an extensibility mechanism to allow
additional attributes,     

  based on schemas, to be added to the element.
  

On lines 735 and 746 make these faults non-terminating
by removing:    

  It is an unrecoverable error and terminates
the Sequence.    

    

After line 760, add a new fault:  

  4.8 Sequence Closed    

  This fault is sent by an RM Destination to
indicate that the 

  specified sequence has been closed. 

  Properties:    

  [Code] Sender   

  [Subcode] wsrm:SequenceClosed   

  [Reason] The sequence is closed and can not
accept new messages.   

  [Detail] <wsrm:Identifier...> xs:anyURI
</wsrm:Identifier> 

Add the proper XML to the schema and WSDL....  

thanks,    

-Doug
← Prev in month ← Prev in thread