shikeying
2024-01-11 3b67e947e36133e2a40eb2737b15ea375e157ea0
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
package com.walker.tcp.netty;
 
import com.walker.infrastructure.ServerId;
import com.walker.infrastructure.utils.NumberGenerator;
import com.walker.infrastructure.utils.StringUtils;
import io.netty.channel.ChannelId;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.util.internal.SocketUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
import java.nio.channels.SocketChannel;
import java.util.List;
 
/**
 * 生成长连接通道ID。自定义该对象。
 * @author 时克英
 * @date 2023-09-29
 */
@Deprecated
public class GenIdNioSocketChannel extends NioServerSocketChannel {
 
    protected final transient Logger logger = LoggerFactory.getLogger(getClass());
 
    @Override
    protected int doReadMessages(List<Object> buf) throws Exception {
        SocketChannel ch = SocketUtils.accept(this.javaChannel());
 
        try {
            if (ch != null) {
//                buf.add(new NioSocketChannel(this, ch));
                buf.add(new GenIdClientSocketChannel(this, ch));
                return 1;
            }
        } catch (Throwable var6) {
            logger.warn("Failed to create a new channel from an accepted socket.", var6);
 
            try {
                ch.close();
            } catch (Throwable var5) {
                logger.warn("Failed to close a socket.", var5);
            }
        }
 
        return 0;
    }
 
    @Override
    protected ChannelId newId() {
        ChannelId channelId = new ChannelId() {
            @Override
            public String asShortText() {
                return new StringBuilder(ServerId.getId())
                        .append(StringUtils.STRING_UNDERLINE).append(NumberGenerator.getSequenceNumber())
                        .append(StringUtils.STRING_UNDERLINE).append(StringUtils.generateRandomNumber(8)).toString();
//                return UUID.randomUUID().toString();
            }
 
            @Override
            public String asLongText() {
//                return UUID.randomUUID().toString();
                return new StringBuilder(ServerId.getId())
                        .append(StringUtils.STRING_UNDERLINE).append(NumberGenerator.getLongSequenceNumber())
                        .append(StringUtils.STRING_UNDERLINE).append(StringUtils.generateRandomNumber(8)).toString();
            }
 
            @Override
            public int compareTo(ChannelId o) {
                return 0;
            }
        };
        return channelId;
    }
 
//    /**
//     * 返回集群中主机服务ID编号,在集群中唯一。
//     * @return
//     */
//    public String getServerId() {
//        return serverId;
//    }
//
//    public void setServerId(String serverId) {
//        this.serverId = serverId;
//    }
//
//    private String serverId = "0";
}