18045010223
2025-07-07 0d3a683a0c97154b1f2e6657398664537e4e3e82
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
package org.yzh.client.netty;
 
import io.github.yezhihao.netmc.codec.MessageDecoder;
import io.github.yezhihao.netmc.codec.MessageEncoder;
import io.netty.channel.ChannelInboundHandlerAdapter;
 
public class ClientConfig {
 
    protected final String ip;
    protected final int port;
    protected final int maxFrameLength;
    protected final byte[] delimiter;
    protected final MessageDecoder decoder;
    protected final MessageEncoder encoder;
    protected final ChannelInboundHandlerAdapter adapter;
    protected final HandlerMapping handlerMapping;
 
    private ClientConfig(String ip,
                         int port,
                         int maxFrameLength,
                         byte[] delimiter,
                         MessageDecoder decoder,
                         MessageEncoder encoder,
                         HandlerMapping handlerMapping
    ) {
        this.ip = ip;
        this.port = port;
        this.maxFrameLength = maxFrameLength;
        this.delimiter = delimiter;
        this.decoder = decoder;
        this.encoder = encoder;
        this.handlerMapping = handlerMapping;
        this.adapter = new TCPClientHandler(this.handlerMapping);
    }
 
    public static ClientConfig.Builder custom() {
        return new Builder();
    }
 
    public static class Builder {
 
        private String ip;
        private int port;
        private int maxFrameLength;
        private byte[] delimiters;
        private MessageDecoder decoder;
        private MessageEncoder encoder;
        private HandlerMapping handlerMapping;
 
        public Builder() {
        }
 
        public Builder setIp(String ip) {
            this.ip = ip;
            return this;
        }
 
        public Builder setPort(int port) {
            this.port = port;
            return this;
        }
 
        public Builder setMaxFrameLength(int maxFrameLength) {
            this.maxFrameLength = maxFrameLength;
            return this;
        }
 
        public Builder setDelimiters(byte[] delimiters) {
            this.delimiters = delimiters;
            return this;
        }
 
        public Builder setDecoder(MessageDecoder decoder) {
            this.decoder = decoder;
            return this;
        }
 
        public Builder setEncoder(MessageEncoder encoder) {
            this.encoder = encoder;
            return this;
        }
 
        public Builder setHandlerMapping(HandlerMapping handlerMapping) {
            this.handlerMapping = handlerMapping;
            return this;
        }
 
        public ClientConfig build() {
            return new ClientConfig(
                    this.ip,
                    this.port,
                    this.maxFrameLength,
                    this.delimiters,
                    this.decoder,
                    this.encoder,
                    this.handlerMapping
            );
        }
    }
}