package com.zy.acs.gateway.cache; 
 | 
  
 | 
import com.alibaba.fastjson.JSON; 
 | 
import io.netty.channel.Channel; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.web.bind.annotation.GetMapping; 
 | 
import org.springframework.web.bind.annotation.RequestParam; 
 | 
import org.springframework.web.bind.annotation.RestController; 
 | 
  
 | 
import java.util.HashMap; 
 | 
import java.util.Map; 
 | 
import java.util.concurrent.ConcurrentHashMap; 
 | 
  
 | 
/** 
 | 
 * Channel缓存 ==>> { 
 | 
 *                   key: agv编号 
 | 
 *                   value: Channel 
 | 
 *                 } 
 | 
 * Created by vincent on 2019-04-02 
 | 
 */ 
 | 
@Slf4j 
 | 
@RestController 
 | 
public class ChannelCache { 
 | 
  
 | 
    private static final Map<String, Channel> channelGroup = new ConcurrentHashMap<>(); 
 | 
  
 | 
    public static void setChannel(String uniqueno, Channel channel){ 
 | 
        // todo 缓存标记 
 | 
//        String hostName = SystemProperties.HOST_NAME; 
 | 
        if (getChannel(uniqueno) == channel){ 
 | 
            return; 
 | 
        } 
 | 
        removeChannel(uniqueno); 
 | 
        channelGroup.put(uniqueno, channel); 
 | 
    } 
 | 
  
 | 
    public static Boolean hasChannel(String uniqueno){ 
 | 
        return channelGroup.get(uniqueno) != null; 
 | 
    } 
 | 
  
 | 
    public static Channel getChannel(String uniqueno){ 
 | 
        return channelGroup.get(uniqueno); 
 | 
    } 
 | 
  
 | 
    public static void removeChannel(String uniqueno) { 
 | 
        Channel channel = getChannel(uniqueno); 
 | 
        if (null == channel){ 
 | 
            return; 
 | 
        } 
 | 
        channelGroup.remove(uniqueno); 
 | 
        channel.close(); 
 | 
    } 
 | 
  
 | 
    public static String removeChannel(Channel channel){ 
 | 
        String key = null; 
 | 
        for (Map.Entry<String, Channel> entry : channelGroup.entrySet()){ 
 | 
            if (entry.getValue() == channel){ 
 | 
                key = entry.getKey(); 
 | 
                break; 
 | 
            } 
 | 
        } 
 | 
        if (null != key){ 
 | 
            channelGroup.remove(key); 
 | 
            return key; 
 | 
        } 
 | 
        return null; 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    @GetMapping("/channel/all") 
 | 
    public String getAllCache(@RequestParam(required = false)String type, 
 | 
                              @RequestParam String pwd){ 
 | 
        if ("xltys1995".equals(pwd)){ 
 | 
            if (null != type && "info".equals(type)){ 
 | 
                return JSON.toJSONString(channelGroup); 
 | 
            } 
 | 
            Map<String, Object> map = new HashMap<>(); 
 | 
            map.put("channels", channelGroup.keySet().toString()); 
 | 
            map.put("count", channelGroup.size()); 
 | 
            return JSON.toJSONString(map); 
 | 
        } 
 | 
        return "请输入密码"; 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |