| // Copyright 2015 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_SPDY_CORE_SPDY_HEADERS_HANDLER_INTERFACE_H_ | |
| #define QUICHE_SPDY_CORE_SPDY_HEADERS_HANDLER_INTERFACE_H_ | |
| #include <stddef.h> | |
| #include "absl/strings/string_view.h" | |
| #include "quiche/common/platform/api/quiche_export.h" | |
| namespace spdy { | |
| // This interface defines how an object that accepts header data should behave. | |
| // It is used by both SpdyHeadersBlockParser and HpackDecoder. | |
| class QUICHE_EXPORT_PRIVATE SpdyHeadersHandlerInterface { | |
| public: | |
| virtual ~SpdyHeadersHandlerInterface() {} | |
| // A callback method which notifies when the parser starts handling a new | |
| // header block. Will only be called once per block, even if it extends into | |
| // CONTINUATION frames. | |
| virtual void OnHeaderBlockStart() = 0; | |
| // A callback method which notifies on a header key value pair. Multiple | |
| // values for a given key will be emitted as multiple calls to OnHeader. | |
| virtual void OnHeader(absl::string_view key, absl::string_view value) = 0; | |
| // A callback method which notifies when the parser finishes handling a | |
| // header block (i.e. the containing frame has the END_HEADERS flag set). | |
| // Also indicates the total number of bytes in this block. | |
| virtual void OnHeaderBlockEnd(size_t uncompressed_header_bytes, | |
| size_t compressed_header_bytes) = 0; | |
| }; | |
| } // namespace spdy | |
| #endif // QUICHE_SPDY_CORE_SPDY_HEADERS_HANDLER_INTERFACE_H_ |