public Http2Frame decode()

in http2/src/main/java/org/apache/mina/http2/impl/Http2Connection.java [60:117]


    public Http2Frame decode(ByteBuffer input) {
        Http2Frame frame = null;
        switch (decoderState) {
        case HEADER:
            if (headerDecoder.consume(input)) {
                Http2FrameHeader header = headerDecoder.getValue();
                headerDecoder.reset();
                decoderState = DecoderState.FRAME;
                switch (header.getType()) {
                case FRAME_TYPE_DATA:
                    frameDecoder = new Http2DataFrameDecoder(header);
                    break;
                case FRAME_TYPE_HEADERS:
                    frameDecoder = new Http2HeadersFrameDecoder(header);
                    break;
                case FRAME_TYPE_PRIORITY:
                    frameDecoder = new Http2PriorityFrameDecoder(header);
                    break;
                case FRAME_TYPE_RST_STREAM:
                    frameDecoder = new Http2RstStreamFrameDecoder(header);
                    break;
                case FRAME_TYPE_SETTINGS:
                    frameDecoder =new Http2SettingsFrameDecoder(header);
                    break;
                case FRAME_TYPE_PUSH_PROMISE:
                    frameDecoder = new Http2PushPromiseFrameDecoder(header);
                    break;
                case FRAME_TYPE_PING:
                    frameDecoder = new Http2PingFrameDecoder(header);
                    break;
                case FRAME_TYPE_GOAWAY:
                    frameDecoder = new Http2GoAwayFrameDecoder(header);
                    break;
                case FRAME_TYPE_WINDOW_UPDATE:
                    frameDecoder = new Http2WindowUpdateFrameDecoder(header);
                    break;
                case FRAME_TYPE_CONTINUATION:
                    frameDecoder = new Http2ContinuationFrameDecoder(header);
                    break;
                default:
                    frameDecoder = new Http2UnknownFrameDecoder(header);
                    break;
                }
                if (frameDecoder.consume(input)) {
                    frame = frameDecoder.getValue();
                    decoderState = DecoderState.HEADER;
                }
            }
            break;
        case FRAME:
            if (frameDecoder.consume(input)) {
                frame = frameDecoder.getValue();
                decoderState = DecoderState.HEADER;
            }
            break;
        }
        return frame;
    }