[Email Paul Ferraro]
Always send an address list PLUS a bit flag that indicates how to
interpret the list. If the flag is 0, interpret the list as a target
list. If the flag is 1, interpret the list as an exclusion list.
When a target list is specified for an rpc, compare the size of the
membership list with the target list. If (target * 2) <= membership,
send list with exclusion flag = 0. If (target * 2) > membership, send
set difference between membership and target list with exclusion flag =
1. On the receiving end, if exclusion flag is 0, handle the message if
we're in the list of addresses; if exclusion flag is 1, handle the
message if we're NOT in the list of addresses.
A rpc with a null target list would always use a exclusion flag of 1,
Even better, add new RpcDispatcher/MessageDispatcher methods to invoke
on all except a list of addresses. This way, jgroups doesn't need to do
anything "clever" - but always send list + bit flag in accordance with