/** Returns a map containing the site keys and addresses as values */ protected Map<String,List<Address>> extract(View view) { Map<String,List<Address>> map=new HashMap<>(view.size()); for(Address mbr: view) { SiteAddress member=(SiteAddress)mbr; String key=member.getSite(); List<Address> list=map.computeIfAbsent(key, k -> new ArrayList<>()); if(!list.contains(member)) list.add(member); } return map; } }
public void siteUnreachable(String site) { if(!(target instanceof SiteAddress) || !((SiteAddress)target).getSite().equals(site) || isDone()) return; completeExceptionally(new UnreachableException(target)); corrDone(); }
continue; SiteAddress addr=(SiteAddress)member; if(addr.getSite().equals(site)) { Rsp<T> rsp=entry.getValue(); if(rsp != null && rsp.setUnreachable()) {
if(target.getSite().equals(site)) { if(local_addr.equals(target) || (target instanceof SiteMaster && is_site_master)) {
/** * Routes the message to the target destination, used by a site master (coordinator) * @param dest * @param sender the address of the sender * @param msg The message */ protected void route(SiteAddress dest, SiteAddress sender, Message msg) { String target_site=dest.getSite(); if(target_site.equals(site)) { if(local_addr.equals(dest) || ((dest instanceof SiteMaster) && is_site_master)) { deliver(dest, sender, msg); } else deliverLocally(dest, sender, msg); // send to member in same local site return; } Relayer tmp=relayer; if(tmp == null) { log.warn(local_addr + ": not site master; dropping message"); return; } Route route=tmp.getRoute(target_site, sender); if(route == null) { log.error(local_addr + ": no route to " + target_site + ": dropping message"); sendSiteUnreachableTo(sender, target_site); } else route.send(dest,sender,msg); }
/** Returns a map containing the site keys and addresses as values */ protected Map<String,List<Address>> extract(View view) { Map<String,List<Address>> map=new HashMap<>(view.size()); for(Address mbr: view) { SiteAddress member=(SiteAddress)mbr; String key=member.getSite(); List<Address> list=map.computeIfAbsent(key, k -> new ArrayList<>()); if(!list.contains(member)) list.add(member); } return map; } }
public void siteUnreachable(String site) { if(!(target instanceof SiteAddress) || !((SiteAddress)target).getSite().equals(site) || isDone()) return; completeExceptionally(new UnreachableException(target)); corrDone(); }
continue; SiteAddress addr=(SiteAddress)member; if(addr.getSite().equals(site)) { Rsp<T> rsp=entry.getValue(); if(rsp != null && rsp.setUnreachable()) {
/** * Routes the message to the target destination, used by a site master (coordinator) * @param dest * @param sender the address of the sender * @param msg The message */ protected void route(SiteAddress dest, SiteAddress sender, Message msg) { String target_site=dest.getSite(); if(target_site.equals(site)) { if(local_addr.equals(dest) || ((dest instanceof SiteMaster) && is_site_master)) { deliver(dest, sender, msg); } else deliverLocally(dest, sender, msg); // send to member in same local site return; } Relayer tmp=relayer; if(tmp == null) { log.warn(local_addr + ": not site master; dropping message"); return; } Route route=tmp.getRoute(target_site, sender); if(route == null) { log.error(local_addr + ": no route to " + target_site + ": dropping message"); sendSiteUnreachableTo(sender, target_site); } else route.send(dest,sender,msg); }
if(target.getSite().equals(site)) { if(local_addr.equals(target) || (target instanceof SiteMaster && is_site_master)) {