// 
// Decompiled by Procyon v0.6.0
// 

package io.netty.handler.codec.http3;

import io.netty.channel.Channel;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.ChannelHandler;
import io.netty.util.internal.StringUtil;
import io.netty.handler.codec.quic.QuicStreamChannel;
import io.netty.channel.ChannelInitializer;

public abstract class Http3RequestStreamInitializer extends ChannelInitializer<QuicStreamChannel>
{
    @Override
    protected final void initChannel(final QuicStreamChannel ch) {
        final ChannelPipeline pipeline = ch.pipeline();
        final Http3ConnectionHandler connectionHandler = ch.parent().pipeline().get(Http3ConnectionHandler.class);
        if (connectionHandler == null) {
            throw new IllegalStateException("Couldn't obtain the " + StringUtil.simpleClassName(Http3ConnectionHandler.class) + " of the parent Channel");
        }
        final Http3RequestStreamEncodeStateValidator encodeStateValidator = new Http3RequestStreamEncodeStateValidator();
        final Http3RequestStreamDecodeStateValidator decodeStateValidator = new Http3RequestStreamDecodeStateValidator();
        pipeline.addLast(connectionHandler.newCodec(encodeStateValidator, decodeStateValidator));
        pipeline.addLast(encodeStateValidator);
        pipeline.addLast(decodeStateValidator);
        pipeline.addLast(connectionHandler.newRequestStreamValidationHandler(ch, encodeStateValidator, decodeStateValidator));
        this.initRequestStream(ch);
    }
    
    protected abstract void initRequestStream(final QuicStreamChannel p0);
}
