package com.zy.core.netty.cache; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RestController; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * Channel缓存 ==>> { * key: uuid * value: Channel * } * Created by vincent on 2019-04-02 */ @Slf4j @RestController public class ChannelCache { private static Map channelGroup = new ConcurrentHashMap<>(); public static void setChannel(String uuid, Channel channel) { // todo 缓存标记 ===>> 分布式系统 // String hostName = SystemProperties.HOST_NAME; if (getChannel(uuid) == channel) { return; } removeChannel(uuid); channelGroup.put(uuid, channel); } public static Channel getChannel(String uuid) { return channelGroup.get(uuid); } public static void removeChannel(String uuid) { Channel channel = getChannel(uuid); if (null == channel) { return; } channelGroup.remove(uuid); channel.close(); } public static String removeChannel(Channel channel) { String key = null; for (Map.Entry entry : channelGroup.entrySet()) { if (entry.getValue() == channel) { key = entry.getKey(); break; } } if (null != key) { channelGroup.remove(key); return key; } return null; } }