package com.bx.imserver.netty; import io.netty.channel.ChannelHandlerContext; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class UserChannelCtxMap { /** * 维护userId和ctx的关联关系,格式:Map> */ private static Map> channelMap = new ConcurrentHashMap(); public static void addChannelCtx(Long userId, Integer channel, ChannelHandlerContext ctx) { channelMap.computeIfAbsent(userId, key -> new ConcurrentHashMap()).put(channel, ctx); } public static void removeChannelCtx(Long userId, Integer terminal) { if (userId != null && terminal != null && channelMap.containsKey(userId)) { Map userChannelMap = channelMap.get(userId); userChannelMap.remove(terminal); if (userChannelMap.isEmpty()) { channelMap.remove(userId); } } } public static ChannelHandlerContext getChannelCtx(Long userId, Integer terminal) { if (userId != null && terminal != null && channelMap.containsKey(userId)) { Map userChannelMap = channelMap.get(userId); if (userChannelMap.containsKey(terminal)) { return userChannelMap.get(terminal); } } return null; } public static Map getChannelCtx(Long userId) { if (userId == null) { return null; } return channelMap.get(userId); } }