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

package io.netty.handler.codec.http3;

import io.netty.channel.ChannelHandlerContext;
import io.netty.util.internal.ObjectUtil;
import io.netty.channel.ChannelInboundHandlerAdapter;

class Http3FrameTypeInboundValidationHandler<T extends Http3Frame> extends ChannelInboundHandlerAdapter
{
    protected final Class<T> frameType;
    
    Http3FrameTypeInboundValidationHandler(final Class<T> frameType) {
        this.frameType = ObjectUtil.checkNotNull(frameType, "frameType");
    }
    
    @Override
    public final void channelRead(final ChannelHandlerContext ctx, final Object msg) throws Exception {
        final T frame = Http3FrameValidationUtils.validateFrameRead(this.frameType, msg);
        if (frame != null) {
            this.channelRead(ctx, frame);
        }
        else {
            this.readFrameDiscarded(ctx, msg);
        }
    }
    
    void channelRead(final ChannelHandlerContext ctx, final T frame) throws Exception {
        ctx.fireChannelRead((Object)frame);
    }
    
    void readFrameDiscarded(final ChannelHandlerContext ctx, final Object discardedFrame) {
        Http3FrameValidationUtils.frameTypeUnexpected(ctx, discardedFrame);
    }
}
