protected void doConnect()

in dubbo-remoting-extensions/dubbo-remoting-quic/src/main/java/org/apache/dubbo/remoting/transport/quic/QuicNettyClient.java [110:154]


    protected void doConnect() throws Throwable {
        logger.info("quic client do connect");
        final QuicNettyClientHandler nettyClientHandler = new QuicNettyClientHandler(getUrl(), this);
        InetSocketAddress address = getConnectAddress();
        logger.info("quic connect address:" + address);
        QuicChannel quicChannel = QuicChannel.newBootstrap(qchannel)
            .streamHandler(new ChannelInboundHandlerAdapter() {
                @Override
                public void channelActive(ChannelHandlerContext ctx) {
                    ctx.close();
                }
            })
            .remoteAddress(address)
            .connect()
            .get(5, TimeUnit.SECONDS);

        this.schannel = quicChannel.createStream(QuicStreamType.BIDIRECTIONAL,
            new ChannelInitializer<QuicStreamChannel>() {
                @Override
                protected void initChannel(QuicStreamChannel quicStreamChannel) throws Exception {

                    NettyCodecAdapter adapter = new NettyCodecAdapter(getCodec(), getUrl(), QuicNettyClient.this);
                    int heartbeatInterval = UrlUtils.getHeartbeat(getUrl());

                    quicStreamChannel.pipeline().addLast(
                            new ChannelInboundHandlerAdapter() {
                                @Override
                                public void userEventTriggered(ChannelHandlerContext ctx, Object evt) {
                                    if (evt == ChannelInputShutdownReadComplete.INSTANCE) {
                                        ((QuicChannel) ctx.channel().parent()).close(true, 0,
                                            ctx.alloc().directBuffer(16)
                                                .writeBytes(new byte[]{'k', 't', 'h', 'x', 'b', 'y', 'e'}));
                                    }
                                }
                            }
                        )
                        .addLast("decoder", adapter.getDecoder())
                        .addLast("encoder", adapter.getEncoder())
                        .addLast("client-idle-handler", new IdleStateHandler(heartbeatInterval, 0, 0, TimeUnit.MILLISECONDS))
                        .addLast("handler", nettyClientHandler);
                    ;
                }
            }
        ).sync().getNow();
    }