chromium/net/third_party/quiche/src/quiche/http2/decoder/http2_frame_decoder.h

// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef QUICHE_HTTP2_DECODER_HTTP2_FRAME_DECODER_H_
#define QUICHE_HTTP2_DECODER_HTTP2_FRAME_DECODER_H_

// Http2FrameDecoder decodes the available input until it reaches the end of
// the input or it reaches the end of the first frame in the input.
// Note that Http2FrameDecoder does only minimal validation; for example,
// stream ids are not checked, nor is the sequence of frames such as
// CONTINUATION frame placement.
//
// Http2FrameDecoder enters state kError once it has called the listener's
// OnFrameSizeError or OnPaddingTooLong methods, and at this time has no
// provision for leaving that state. While the HTTP/2 spec (RFC7540) allows
// for some such errors to be considered as just stream errors in some cases,
// this implementation treats them all as connection errors.

#include <stddef.h>

#include <cstdint>

#include "quiche/http2/decoder/decode_buffer.h"
#include "quiche/http2/decoder/decode_status.h"
#include "quiche/http2/decoder/frame_decoder_state.h"
#include "quiche/http2/decoder/http2_frame_decoder_listener.h"
#include "quiche/http2/decoder/payload_decoders/altsvc_payload_decoder.h"
#include "quiche/http2/decoder/payload_decoders/continuation_payload_decoder.h"
#include "quiche/http2/decoder/payload_decoders/data_payload_decoder.h"
#include "quiche/http2/decoder/payload_decoders/goaway_payload_decoder.h"
#include "quiche/http2/decoder/payload_decoders/headers_payload_decoder.h"
#include "quiche/http2/decoder/payload_decoders/ping_payload_decoder.h"
#include "quiche/http2/decoder/payload_decoders/priority_payload_decoder.h"
#include "quiche/http2/decoder/payload_decoders/priority_update_payload_decoder.h"
#include "quiche/http2/decoder/payload_decoders/push_promise_payload_decoder.h"
#include "quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder.h"
#include "quiche/http2/decoder/payload_decoders/settings_payload_decoder.h"
#include "quiche/http2/decoder/payload_decoders/unknown_payload_decoder.h"
#include "quiche/http2/decoder/payload_decoders/window_update_payload_decoder.h"
#include "quiche/http2/http2_structures.h"
#include "quiche/common/platform/api/quiche_export.h"
#include "quiche/common/platform/api/quiche_logging.h"

namespace http2 {
namespace test {
class Http2FrameDecoderPeer;
}  // namespace test

class QUICHE_EXPORT Http2FrameDecoder {};

}  // namespace http2

#endif  // QUICHE_HTTP2_DECODER_HTTP2_FRAME_DECODER_H_