All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jgroups.protocols.relay.ForwardingRoute Maven / Gradle / Ivy

package org.jgroups.protocols.relay;

import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Route which forwards all messages to a given site via a given route.
* Example: if site HF is reachable via NET1, and NET2 is not directly connected to HF, it needs to have a * ForwardConfig with to="HF" and gateway="NET1". This means that a message to site HF will be forwarded to NET1, * which then forwards it to HF.
* Note that 'to' can be a regular expression and {@link #matches(String)} can be used to match a given site against it. * @author Bela Ban * @since 5.2.15 */ public class ForwardingRoute implements Comparable { protected String to; // target site protected String gateway; // actual site to use for routing (routes.get(gateway); has to point to an existing route protected Pattern p; public ForwardingRoute(String to, String gateway) { this.to=Objects.requireNonNull(to); this.gateway=Objects.requireNonNull(gateway); p=Pattern.compile(to); } public String to() {return to;} public ForwardingRoute to(String to) {this.to=Objects.requireNonNull(to); p=Pattern.compile(to); return this;} public String gateway() {return gateway;} public ForwardingRoute gateway(String gw) {this.gateway=Objects.requireNonNull(gw); return this;} public boolean matches(String site) {Matcher m=p.matcher(site); return m.matches();} @Override public int compareTo(ForwardingRoute o) { if(this == o) return 0; int rc=gateway.compareTo(o.gateway); return rc != 0? rc : to.compareTo(o.to); } @Override public boolean equals(Object obj) { return compareTo((ForwardingRoute)obj) == 0; } @Override public String toString() { return String.format("to=%s, gw=%s", to, gateway); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy