blob: 3e6db43e823fe014796390e0a38654f04eb00cd8 [file] [log] [blame]
QUICHE teamfd50a402018-12-07 22:54:05 -05001// Copyright 2016 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef QUICHE_HTTP2_DECODER_PAYLOAD_DECODERS_WINDOW_UPDATE_PAYLOAD_DECODER_H_
6#define QUICHE_HTTP2_DECODER_PAYLOAD_DECODERS_WINDOW_UPDATE_PAYLOAD_DECODER_H_
7
8// Decodes the payload of a WINDOW_UPDATE frame.
9
QUICHE team5be974e2020-12-29 18:35:24 -050010#include "http2/decoder/decode_buffer.h"
11#include "http2/decoder/decode_status.h"
12#include "http2/decoder/frame_decoder_state.h"
13#include "http2/http2_structures.h"
14#include "common/platform/api/quiche_export.h"
QUICHE teamfd50a402018-12-07 22:54:05 -050015
16namespace http2 {
17namespace test {
18class WindowUpdatePayloadDecoderPeer;
19} // namespace test
20
bnc641ace72020-01-21 12:24:57 -080021class QUICHE_EXPORT_PRIVATE WindowUpdatePayloadDecoder {
QUICHE teamfd50a402018-12-07 22:54:05 -050022 public:
23 // Starts decoding a WINDOW_UPDATE frame's payload, and completes it if
24 // the entire payload is in the provided decode buffer.
25 DecodeStatus StartDecodingPayload(FrameDecoderState* state, DecodeBuffer* db);
26
27 // Resumes decoding a WINDOW_UPDATE frame's payload that has been split across
28 // decode buffers.
29 DecodeStatus ResumeDecodingPayload(FrameDecoderState* state,
30 DecodeBuffer* db);
31
32 private:
33 friend class test::WindowUpdatePayloadDecoderPeer;
34
35 DecodeStatus HandleStatus(FrameDecoderState* state, DecodeStatus status);
36
37 Http2WindowUpdateFields window_update_fields_;
38};
39
40} // namespace http2
41
42#endif // QUICHE_HTTP2_DECODER_PAYLOAD_DECODERS_WINDOW_UPDATE_PAYLOAD_DECODER_H_