- From: Williams, Stuart <skw@hplb.hpl.hp.com>
- Date: Fri, 9 Feb 2001 18:03:44 -0000
- To: "'Scott Isaacson'" <SISAACSON@novell.com>, mark.baker@canada.sun.com, ksankar@cisco.com, moreau@crf.canon.fr, marting@develop.com, "Williams, Stuart" <skw@hplb.hpl.hp.com>, ohurley@iona.com, frystyk@microsoft.com, john_ibbotson@uk.ibm.com, marc.hadley@uk.sun.com, Lynne.Thompson@unisys.com, nick.smilonich@unisys.com, ylafon@w3.org
- Cc: xml-dist-app@w3.org
Scott,
Your pseudo code seems to catch most of it. The original message is sent to
Node V not Node VI. Node V is intended to be a business/application level
intermediary, say a broker or something like that.
The other pieces that's missing from the code is 'catching' the .confirms
that indicate that the message was at least sent ok (or not).
> M1.Destination("Application_NodeVI"); // Is this really the
destination?
No, Node V is the destination of the original operation.
> // How did M know to process M1 if the dest was Application_NodeVI?
> // Does is process all messages and let T decide to take action or
not?
If the message just shows up, either M has look for targeted blocks and pass
them up to the individual handlers, or we think of the handlers as be
encapsulated as a single 'application/layer client' with some internal
infrastructure for dispaching the message to targetted handlers.
> // Does T have a test to see if B1 is really there? If so it makes
> // B3, else it leaves it alone?
We don't really know what the function of T is, but drop B1 and insert B3
could be it.
> // How does O know to process M1 if the dest was Application_NodeVI?
Again it doesn't the inbound message was addressed to Node V. The
business/application intermediary starts a *new* operation with Node VI.
Well... at least that's how I'd read it!
Thanks,
regards
Stuart
> -----Original Message-----
> From: Scott Isaacson [mailto:SISAACSON@novell.com]
> Sent: 09 February 2001 17:37
> To: mark.baker@canada.sun.com; ksankar@cisco.com; moreau@crf.canon.fr;
> marting@develop.com; skw@hplb.hpl.hp.com; ohurley@iona.com;
> frystyk@microsoft.com; john_ibbotson@uk.ibm.com;
> marc.hadley@uk.sun.com;
> Lynne.Thompson@unisys.com; nick.smilonich@unisys.com; ylafon@w3.org
> Cc: xml-dist-app@w3.org
> Subject: RE: [AMG] : PPT of diagram
>
>
> > I am somewhat confused about why we would want to describe this as a
> > request/response interaction?
>
> The diagram does have arrows on both ends of the horizontal
> message lines! But, if it is request/response, the diagram
> does not have identifiers for the messages (M3, M4??) coming
> back in response to M1 and M2 (where notation Mx = XML
> Protocol message x).
>
> Let's assume it is just one-way: "SendMessage". Do I
> understand the diagram correctly with the following psuedo-code:
>
> ******************************************************
>
> // XMLP Application Code for ApplicationNodeI
> DoWork(XMLPProtocolHandler R, XMLPProtocolHandler S)
> {
>
> XMLPProtocolProcessor L;
> XMLPMessage M1 = new XMLPMessage();
> XMLPBlock B1, B2;
>
> L = getSendingProcessor();
> B1 = S.DoWork();
> B2 = R.DoWork();
> M1.AddBlock(B1);
> M1.AddBlock(B2);
> M1.Destination("Application_NodeVI"); // Is this
> really the destination?
>
> L.SendMessage(M1);
> }
>
>
> // XMLPProtocolProcessor code for M
> ReceiveMessage(XMLPMessage M1)
> {
>
> // How did M know to process M1 if the dest was
> Application_NodeVI?
> // Does is process all messages and let T decide to
> take action or not?
>
> XMLPProtocolHandler T = getHandler();
>
> T.DoWork(M1);
>
> SendMessage(M1);
>
> }
>
>
> // XMLPProtocolHandler code for T
> DoWork(XMLPMessage M1)
> {
>
> XMLPBlock B1, B3;
>
> B1 = M1.getFirstBlock();
>
> // Does T have a test to see if B1 is really there? If
> so it makes
> // B3, else it leaves it alone?
>
> B3 = process(B1);
>
> M1.DelBlock(B1);
> M1.AddBlock(B3);
> }
>
>
> // XMLPProtocolProcessor code for N
> ReceiveMessage(XMLPMessage M1)
> {
>
> // The code in this instance of SendMessage binds to a new UP
>
> SendMessage(M1);
>
> }
>
> // XMLP Application Code for ApplicationNodeV
> DoWork(XMLMessage M1)
> {
>
> XMLPProtocolProcessor P;
> XMLPMessage M2 = new XMLPMessage();
> XMLPBlock B2, B3, B4, B5;
> XMLPProtocolHandler U, V;
>
>
> // How does O know to process M1 if the dest was
> Application_NodeVI?
>
> P = getSendingProcessor();
>
>
> B2 = M1.getFirstBlock();
> B3 = M1.getNextBlock();
>
> U = getHandler(B2);
> V = getHandler(B3);
>
> B5 = U.DoWork(B2);
> B4 = V.DoWork(B3);
>
> M2.AddBlock(B4);
> M2.AddBlock(B5);
> M2.Destination("Application_NodeVI");
>
> P.SendMessage(M2);
>
> }
>
>
> // XMLP Application Code for ApplicationNodeVI
> DoWork(XMLMessage M2)
> {
>
> XMLPBlock B4, B5;
> XMLPProtocolHandler W, X;
>
>
> B4 = M1.getFirstBlock();
> B5 = M1.getNextBlock();
>
> W = getHandler(B5);
> X = getHandler(B4);
>
> W.DoWork(B5);
> X.DoWork(B4);
>
>
> }
>
>
> ******************************************************
>
> Scott A. Isaacson
> 801.861.7366
> sisaacson@novell.com
>
>
Received on Friday, 9 February 2001 13:09:42 UTC