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; } }