// 
// 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.handler.codec.quic.QuicStreamChannel;
import io.netty.channel.ChannelInitializer;

public abstract class Http3PushStreamClientInitializer extends ChannelInitializer<QuicStreamChannel>
{
    @Override
    protected final void initChannel(final QuicStreamChannel ch) {
        if (Http3CodecUtils.isServerInitiatedQuicStream(ch)) {
            throw new IllegalArgumentException("Using client push stream initializer for server stream: " + ch.streamId());
        }
        Http3CodecUtils.verifyIsUnidirectional(ch);
        final Http3ConnectionHandler connectionHandler = Http3CodecUtils.getConnectionHandlerOrClose(ch.parent());
        if (connectionHandler == null) {
            return;
        }
        final ChannelPipeline pipeline = ch.pipeline();
        final Http3RequestStreamDecodeStateValidator decodeStateValidator = new Http3RequestStreamDecodeStateValidator();
        pipeline.addLast(connectionHandler.newCodec(Http3RequestStreamCodecState.NO_STATE, decodeStateValidator));
        pipeline.addLast(decodeStateValidator);
        pipeline.addLast(connectionHandler.newPushStreamValidationHandler(ch, decodeStateValidator));
        this.initPushStream(ch);
    }
    
    protected abstract void initPushStream(final QuicStreamChannel p0);
}
