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