Re: Effects of patterns on client code

On Wednesday's call we talked about what client functions would be needed 
in an interface for each of the p2-family patterns[1], and I think we made 
some good progress in clarifying the effects of patterns on such an 
interface.  One question that arose was which of the functions were needed 
by which client roles.

Here is a new summary of the client functions, grouped by pattern and 
client role.  I am assuming the same receiverCallback function can be used 
to receive either a fault message or a regular output message.  Again, this 
is only one of many ways such a client library interface could be written, 
but I think it's instructive to examine.

p2:
   (Unlabeled message 1 sender role):
     void multicastMessage(ServiceAddressList ss, Message m);
   (Unlabeled output message 2 receiver role):
     void registerMessageReceiverCallback(MessageReceiverCallback f);
   (Unlabeled fault message 2 receiver role):
     void registerMessageReceiverCallback(MessageReceiverCallback f);

p2a:
   Client A:
     void sendMessage(ServiceAddress s, Message m);
   Client Bi:
     void registerMessageReceiverCallback(MessageReceiverCallback f);
   Client C:
     void registerMessageReceiverCallback(MessageReceiverCallback f);

p2a1:
   Client A:
     void sendMessage(ServiceAddress s, Message m);
   Client Bi:
     void registerMessageReceiverCallback(MessageReceiverCallback f);

p2a2:
   Client A:
     void sendMessage(ServiceAddress s, Message m);
   Client Bi:
     void registerMessageReceiverCallback(MessageReceiverCallback f);

p2b:
   Client A:
     Message sendAndReceiveMessage(ServiceAddress s, Message m);
   Client Bi:
     void registerMessageReceiverCallback(MessageReceiverCallback f);

p2c:
   Client A:
     void sendMessage(ServiceAddress s, Message m);
   Client B:
     void registerMessageReceiverCallback(MessageReceiverCallback f);
   Client C:
     void registerMessageReceiverCallback(MessageReceiverCallback f);

p2d:
   Client A:
     void sendMessage(ServiceAddress s, Message m);
     void registerMessageReceiverCallback(MessageReceiverCallback f);
   Client B:
     void registerMessageReceiverCallback(MessageReceiverCallback f);

p2d1:
   Client A:
     void sendMessage(ServiceAddress s, Message m);
   Client B:
     void registerMessageReceiverCallback(MessageReceiverCallback f);

p2e:
   Client A:
     Message sendAndReceiveMessage(ServiceAddress s, Message m);

p2umci-7:
   Client A:
     void multicastMessage(ServiceAddressList ss, Message m);
   Client B:
     void registerMessageReceiverCallback(MessageReceiverCallback f);

p3: (Uncertain.  Depends on what is meant by "on the same channel".)


Reference
1. 
http://dev.w3.org/cvsweb/~checkout~/2002/ws/desc/wsdl12/meps-vs-iops/meps-vs-iops_clean.htm 



-- 
David Booth
W3C Fellow / Hewlett-Packard
Telephone: +1.617.253.1273

Received on Monday, 7 July 2003 10:48:41 UTC