blob: 63f17219928c52c0ac6ccfea017ba687048f1147 [file] [log] [blame]
QUICHE teama6ef0a62019-03-07 20:34:33 -05001// Copyright (c) 2018 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#include "net/third_party/quiche/src/quic/core/qpack/qpack_decoder_stream_sender.h"
6
7#include <cstddef>
8#include <limits>
vasilvv872e7a32019-03-12 16:42:44 -07009#include <string>
QUICHE teama6ef0a62019-03-07 20:34:33 -050010
11#include "net/third_party/quiche/src/quic/core/qpack/qpack_constants.h"
12#include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
QUICHE teama6ef0a62019-03-07 20:34:33 -050013
14namespace quic {
15
renjietangc2aa5cb2019-06-20 12:22:53 -070016QpackDecoderStreamSender::QpackDecoderStreamSender(
17 QpackStreamSenderDelegate* delegate)
QUICHE teama6ef0a62019-03-07 20:34:33 -050018 : delegate_(delegate) {
19 DCHECK(delegate_);
20}
21
22void QpackDecoderStreamSender::SendInsertCountIncrement(uint64_t increment) {
bnc28bb06c2019-07-17 05:21:10 -070023 values_.varint = increment;
QUICHE teama6ef0a62019-03-07 20:34:33 -050024
vasilvvc48c8712019-03-11 13:38:16 -070025 std::string output;
bnc28bb06c2019-07-17 05:21:10 -070026 instruction_encoder_.Encode(InsertCountIncrementInstruction(), values_,
27 &output);
renjietangc2aa5cb2019-06-20 12:22:53 -070028 delegate_->WriteStreamData(output);
QUICHE teama6ef0a62019-03-07 20:34:33 -050029}
30
31void QpackDecoderStreamSender::SendHeaderAcknowledgement(
32 QuicStreamId stream_id) {
bnc28bb06c2019-07-17 05:21:10 -070033 values_.varint = stream_id;
QUICHE teama6ef0a62019-03-07 20:34:33 -050034
vasilvvc48c8712019-03-11 13:38:16 -070035 std::string output;
bnc28bb06c2019-07-17 05:21:10 -070036 instruction_encoder_.Encode(HeaderAcknowledgementInstruction(), values_,
37 &output);
renjietangc2aa5cb2019-06-20 12:22:53 -070038 delegate_->WriteStreamData(output);
QUICHE teama6ef0a62019-03-07 20:34:33 -050039}
40
41void QpackDecoderStreamSender::SendStreamCancellation(QuicStreamId stream_id) {
bnc28bb06c2019-07-17 05:21:10 -070042 values_.varint = stream_id;
QUICHE teama6ef0a62019-03-07 20:34:33 -050043
vasilvvc48c8712019-03-11 13:38:16 -070044 std::string output;
bnc28bb06c2019-07-17 05:21:10 -070045 instruction_encoder_.Encode(StreamCancellationInstruction(), values_,
46 &output);
renjietangc2aa5cb2019-06-20 12:22:53 -070047 delegate_->WriteStreamData(output);
QUICHE teama6ef0a62019-03-07 20:34:33 -050048}
49
50} // namespace quic