Re: callAll() return value

From: Mark Taylor <m.b.taylor-at-bristol.ac.uk>
Date: Mon, 15 Sep 2008 18:04:44 +0100 (BST)


On Mon, 15 Sep 2008, Mike Fitzpatrick wrote:

> It's the Monday morning after an extended trip so maybe I'm
> missing something: the purpose of returning the msg-id in a
> call() was so that when the recipient sent a reply() with the ID
> the sender would be able to map a reply to the original message.
> Don't we lose that if callAll() doesn't provide the msg-id?
>
> Perhaps a simpler solution is for callAll() to return a map containing
> both the msg-id and the recipient list (and for convenience maybe even
> a count)? In your scheme I can send two callAll() and perhaps get
> back an OK and and ERR from one recipient, but I won't know which
> of the messages actually failed.

No that's not right. The msg-tag which the sender generates and passes as an argument to callAll() is what's used to match up sends with replies, so this confusion does not result. The msg-id returned from callAll() is only used in the comparatively rare case when the sender needs to send or interpret progress messages or similar; it is not required just for matching up sends with replies.

However, thinking about it a bit more, a tidier solution might be for callAll() to return a map in which the keys are client-ids of the recipients, and the values are the corresponding msg-ids. Then callAll() provides all the same information as multiple call()s.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/
Received on 2008-09-15Z19:08:33