- From: Scott Isaacson <SISAACSON@novell.com>
- Date: Fri, 09 Feb 2001 10:36:48 -0700
- 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>
> 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 12:37:50 UTC