list.removeIf(route -> !val.contains(route.siteMaster())); .forEach(addr -> list.add(new Route(addr, channel, relay, log).stats(stats)));
/** * Returns the bridge channel to a given site * @param site_name The site name, e.g. "SFO" * @return The JChannel to the given site, or null if no route was found or we're not the coordinator */ public JChannel getBridge(String site_name) { Relayer tmp=relayer; Route route=tmp != null? tmp.getRoute(site_name): null; return route != null? route.bridge() : null; }
public boolean equals(Object obj) { return compareTo((Route)obj) == 0; }
protected boolean contains(List<Route> routes, Address addr) { return routes.stream().anyMatch(route -> route.siteMaster().equals(addr)); }
/** Sends the message via all bridges excluding the excluded_sites bridges */ protected void sendToBridges(Address sender, final Message msg, String ... excluded_sites) { Relayer tmp=relayer; List<Route> routes=tmp != null? tmp.getRoutes(excluded_sites) : null; if(routes == null) return; for(Route route: routes) { if(log.isTraceEnabled()) log.trace(local_addr + ": relaying multicast message from " + sender + " via route " + route); try { route.send(null, sender, msg); } catch(Exception ex) { log.error(local_addr + ": failed relaying message from " + sender + " via route " + route, ex); } } }
public void send(Address final_destination, Address original_sender, final Message msg) { if(log.isTraceEnabled()) log.trace("routing message to " + final_destination + " via " + site_master); long start=stats? System.nanoTime() : 0; try { Message copy=createMessage(site_master, final_destination, original_sender, msg); bridge.send(copy); if(stats) { relay.addToRelayedTime(System.nanoTime() - start); relay.incrementRelayed(); } } catch(Exception e) { log.error(Util.getMessage("FailureRelayingMessage"), e); } }
public int compareTo(Route o) { return site_master.compareTo(o.siteMaster()); }
/** * 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); }
public void send(Address final_destination, Address original_sender, final Message msg) { if(log.isTraceEnabled()) log.trace("routing message to " + final_destination + " via " + site_master); long start=stats? System.nanoTime() : 0; try { Message copy=createMessage(site_master, final_destination, original_sender, msg); bridge.send(copy); if(stats) { relay.addToRelayedTime(System.nanoTime() - start); relay.incrementRelayed(); } } catch(Exception e) { log.error(Util.getMessage("FailureRelayingMessage"), e); } }
list.removeIf(route -> !val.contains(route.siteMaster())); .forEach(addr -> list.add(new Route(addr, channel, relay, log).stats(stats)));
protected boolean contains(List<Route> routes, Address addr) { return routes.stream().anyMatch(route -> route.siteMaster().equals(addr)); }
/** Sends the message via all bridges excluding the excluded_sites bridges */ protected void sendToBridges(Address sender, final Message msg, String ... excluded_sites) { Relayer tmp=relayer; List<Route> routes=tmp != null? tmp.getRoutes(excluded_sites) : null; if(routes == null) return; for(Route route: routes) { if(log.isTraceEnabled()) log.trace(local_addr + ": relaying multicast message from " + sender + " via route " + route); try { route.send(null, sender, msg); } catch(Exception ex) { log.error(local_addr + ": failed relaying message from " + sender + " via route " + route, ex); } } }
/** * Returns the bridge channel to a given site * @param site_name The site name, e.g. "SFO" * @return The JChannel to the given site, or null if no route was found or we're not the coordinator */ public JChannel getBridge(String site_name) { Relayer tmp=relayer; Route route=tmp != null? tmp.getRoute(site_name): null; return route != null? route.bridge() : null; }
public boolean equals(Object obj) { return compareTo((Route)obj) == 0; }
public int compareTo(Route o) { return site_master.compareTo(o.siteMaster()); }
/** * 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); }