【fix】添加虚拟路由管理

This commit is contained in:
wujiawei
2025-05-07 11:09:19 +08:00
parent 965142793c
commit 96929044fa
37 changed files with 356 additions and 157 deletions

View File

@ -1,5 +1,7 @@
package org.framework.lazy.cloud.network.heartbeat.protocol.route;
import org.wu.framework.core.NormalUsedString;
import java.util.concurrent.ConcurrentHashMap;
/**
@ -12,11 +14,16 @@ public class RouteContext {
private static final ConcurrentHashMap<String, ProxyRoute> m = new ConcurrentHashMap<>();
/**
* 设置路由
*
* @param route 路由
*/
public static void setRoute(ProxyRoute route) {
RouteType routeType = route.getRouteType();
String virtualIp = route.getVirtualIp();
String virtualPort = route.getVirtualPort();
String key = virtualIp + ":" + virtualPort + routeType;
String key = virtualIp + ":" + virtualPort + "_" + routeType;
if (m.containsKey(key)) {
return;
}
@ -24,12 +31,32 @@ public class RouteContext {
m.put(key, route);
}
public static ProxyRoute getRoute(String ip, String port) {
/**
* 获取路由
*
* @param virtualIp 原始ip
* @param virtualPort 原始端口
*/
public static ProxyRoute getRoute(String virtualIp, String virtualPort) {
ProxyRoute p = m.values()
.stream()
.filter(route -> route.getVirtualIp().equals(ip) && (route.getVirtualPort().equals(port) || route.getVirtualPort().equals("ALL")))
.filter(route -> route.getVirtualIp().equals(virtualIp)
&&
(route.getVirtualPort().equals(virtualPort) || route.getVirtualPort().equals(NormalUsedString.ASTERISK)))
.findFirst()
.orElse(null);
return p;
}
/**
* 删除路由
*
* @param virtualIp 原始ip
* @param virtualPort 原始端口
*/
public static void removeRoute(String virtualIp, String virtualPort, RouteType routeType) {
String key = virtualIp + ":" + virtualPort + "_" + routeType;
m.remove(key);
}
}