- 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