- 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