W3C home > Mailing lists > Public > xml-dist-app@w3.org > February 2001

RE: [AMG] : PPT of diagram

From: Scott Isaacson <SISAACSON@novell.com>
Date: Fri, 09 Feb 2001 10:36:48 -0700
Message-Id: <sa83c844.067@prv-mail20.provo.novell.com>
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 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:58:58 GMT