blob: a8f482560c51d06efe74266ecdcbbac2607a1d8c [file] [log] [blame]
// Copyright (c) 2018 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 NET_THIRD_PARTY_QUIC_CORE_QPACK_QPACK_ENCODER_H_
#define NET_THIRD_PARTY_QUIC_CORE_QPACK_QPACK_ENCODER_H_
#include <cstdint>
#include <memory>
#include "net/third_party/quic/core/qpack/qpack_header_table.h"
#include "net/third_party/quic/platform/api/quic_export.h"
#include "net/third_party/spdy/core/hpack/hpack_encoder.h"
#include "net/third_party/spdy/core/spdy_header_block.h"
namespace quic {
// QPACK encoder class. Exactly one instance should exist per QUIC connection.
// This class vends a new ProgressiveEncoder instance for each new header list
// to be encoded.
// TODO(bnc): This class will manage the encoding context, send data on the
// encoder stream, and receive data on the decoder stream.
class QUIC_EXPORT_PRIVATE QpackEncoder {
public:
// This factory method should be called to start encoding a header list.
// |*header_list| must remain valid and must not change
// during the lifetime of the returned ProgressiveEncoder instance.
std::unique_ptr<spdy::HpackEncoder::ProgressiveEncoder> EncodeHeaderList(
const spdy::SpdyHeaderBlock* header_list);
private:
QpackHeaderTable header_table_;
};
} // namespace quic
#endif // NET_THIRD_PARTY_QUIC_CORE_QPACK_QPACK_ENCODER_H_