| 221 | // of futures that represent their responses. |
| 222 | template <typename Req, typename Res> |
| 223 | std::set<process::Future<Res>> broadcast( |
| 224 | const Protocol<Req, Res>& protocol, |
| 225 | const Req& req, |
| 226 | const std::set<process::UPID>& filter) |
| 227 | { |
| 228 | std::set<process::Future<Res>> futures; |
| 229 | typename std::set<process::UPID>::const_iterator iterator; |
| 230 | for (iterator = pids.begin(); iterator != pids.end(); ++iterator) { |
| 231 | const process::UPID& pid = *iterator; |
| 232 | if (filter.count(pid) == 0) { |
| 233 | futures.insert(protocol(pid, req)); |
| 234 | } |
| 235 | } |
| 236 | return futures; |
| 237 | } |
| 238 | |
| 239 | // Sends a request to each of the group members without expecting responses. |
| 240 | template <typename M> |