// Copyright 2017 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_HPACK_DECODER_HPACK_DECODER_H_ #define QUICHE_HTTP2_HPACK_DECODER_HPACK_DECODER_H_ // Decodes HPACK blocks, calls an HpackDecoderListener with the decoded header // entries. Also notifies the listener of errors and of the boundaries of the // HPACK blocks. // TODO(jamessynge): Add feature allowing an HpackEntryDecoderListener // sub-class (and possibly others) to be passed in for counting events, // so that deciding whether to count is not done by having lots of if // statements, but instead by inserting an indirection only when needed. // TODO(jamessynge): Consider whether to return false from methods below // when an error has been previously detected. It protects calling code // from its failure to pay attention to previous errors, but should we // spend time to do that? #include <stddef.h> #include <cstdint> #include "quiche/http2/decoder/decode_buffer.h" #include "quiche/http2/hpack/decoder/hpack_block_decoder.h" #include "quiche/http2/hpack/decoder/hpack_decoder_listener.h" #include "quiche/http2/hpack/decoder/hpack_decoder_state.h" #include "quiche/http2/hpack/decoder/hpack_decoder_tables.h" #include "quiche/http2/hpack/decoder/hpack_decoding_error.h" #include "quiche/http2/hpack/decoder/hpack_whole_entry_buffer.h" #include "quiche/common/platform/api/quiche_export.h" namespace http2 { namespace test { class HpackDecoderPeer; } // namespace test class QUICHE_EXPORT HpackDecoder { … }; } // namespace http2 #endif // QUICHE_HTTP2_HPACK_DECODER_HPACK_DECODER_H_