luxiaotao1123
2024-09-09 ea7e27ff897da58be02c14a6f18adbf387a56ee1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
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 "请输入密码";
    }
 
 
}