package com.ruoyi.dataInterchange.netty.client;
|
|
import com.ruoyi.dataInterchange.wapper.UPConnect;
|
import io.netty.channel.Channel;
|
import io.netty.channel.ChannelId;
|
import io.netty.channel.group.ChannelGroup;
|
import io.netty.channel.group.DefaultChannelGroup;
|
import io.netty.util.concurrent.GlobalEventExecutor;
|
|
import java.util.Map;
|
import java.util.concurrent.ConcurrentHashMap;
|
|
/**
|
* @author zhibing.pu
|
* @Date 2025/3/4 19:17
|
*/
|
public class ChannelMap {
|
//存储主链路通道
|
private static final ChannelGroup SERVER_GROUP = new DefaultChannelGroup("Jtt809Server", GlobalEventExecutor.INSTANCE);
|
//存储主链路ID
|
private static final Map<Integer, ChannelId> SERVER_ID_MAP = new ConcurrentHashMap<>();
|
//存储从链路通道
|
private static final ChannelGroup CLIENT_GROUP = new DefaultChannelGroup("Jtt809Client", GlobalEventExecutor.INSTANCE);
|
//存储从链路ID
|
private static final Map<Integer, ChannelId> CLIENT_ID_MAP = new ConcurrentHashMap<>();
|
//存储从链路连接地址和端口号
|
private static final Map<Integer, UPConnect> IP_PORT = new ConcurrentHashMap<>();
|
//存储从链路连接重试次数
|
private static final Map<Integer, Integer> TIMES = new ConcurrentHashMap<>();
|
|
/**
|
* 保存通道
|
*
|
* @param key
|
* @param channel
|
*/
|
public static void addClientChannel(int key, ChannelId channel) {
|
CLIENT_ID_MAP.put(key, channel);
|
}
|
|
|
/**
|
* 获取通道
|
*
|
* @param key
|
* @return
|
*/
|
public static Channel getClientChannel(int key) {
|
ChannelId channelId = CLIENT_ID_MAP.get(key);
|
Channel channel = CLIENT_GROUP.find(channelId);
|
return channel;
|
}
|
|
|
/**
|
* 保存通道
|
*
|
* @param key
|
* @param channel
|
*/
|
public static void addServerChannel(int key, ChannelId channel) {
|
SERVER_ID_MAP.put(key, channel);
|
}
|
|
|
/**
|
* 获取通道
|
*
|
* @param key
|
* @return
|
*/
|
public static Channel getServerChannel(int key) {
|
ChannelId channelId = SERVER_ID_MAP.get(key);
|
Channel channel = SERVER_GROUP.find(channelId);
|
return channel;
|
}
|
|
|
/**
|
* 缓存从链路的IP地址和端口号
|
*
|
* @param key
|
* @param req
|
*/
|
public static void addIpAndPort(int key, UPConnect req) {
|
IP_PORT.put(key, req);
|
}
|
|
|
/**
|
* 获取从链路的IP地址和端口号
|
*
|
* @param key
|
*/
|
public static UPConnect getIpAndPort(int key) {
|
return IP_PORT.get(key);
|
}
|
|
/**
|
* 获取从链路连接重试次数
|
*
|
* @param key
|
* @return
|
*/
|
public static int getTimes(int key) {
|
return TIMES.get(key);
|
}
|
|
/**
|
* 保存从链路连接重试次数
|
*
|
* @param key
|
* @return
|
*/
|
public static int saveTimes(int key, int t) {
|
return TIMES.put(key, t);
|
}
|
}
|