proxygen
Main Page
Related Pages
Namespaces
Classes
Files
Examples
File List
File Members
HPACKEncoder.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2015-present, Facebook, Inc.
3
* All rights reserved.
4
*
5
* This source code is licensed under the BSD-style license found in the
6
* LICENSE file in the root directory of this source tree. An additional grant
7
* of patent rights can be found in the PATENTS file in the same directory.
8
*
9
*/
10
#pragma once
11
12
#include <
folly/io/IOBuf.h
>
13
#include <
proxygen/lib/http/codec/compress/HPACKConstants.h
>
14
#include <
proxygen/lib/http/codec/compress/HPACKEncoderBase.h
>
15
#include <vector>
16
17
namespace
proxygen
{
18
19
class
HPACKEncoder
:
public
HPACKEncoderBase
,
public
HPACKContext
{
20
21
public
:
22
explicit
HPACKEncoder
(
bool
huffman,
23
uint32_t
tableSize=
HPACK::kTableSize
)
24
:
HPACKEncoderBase
(huffman)
25
,
HPACKContext
(tableSize) {}
26
31
std::unique_ptr<folly::IOBuf>
encode
(
32
const
std::vector<HPACKHeader>& headers,
33
uint32_t
headroom = 0);
34
35
void
setHeaderTableSize
(
uint32_t
size
) {
36
HPACKEncoderBase::setHeaderTableSize
(
table_
, size);
37
}
38
39
private
:
40
void
encodeAsIndex
(
uint32_t
index);
41
42
void
encodeHeader
(
const
HPACKHeader
& header);
43
44
bool
encodeAsLiteral
(
const
HPACKHeader
& header,
bool
indexing);
45
46
void
encodeLiteral
(
const
HPACKHeader
& header,
47
uint32_t
nameIndex
,
48
const
HPACK::Instruction
& instruction);
49
};
50
51
}
proxygen::HPACK::kTableSize
const uint32_t kTableSize
Definition:
HPACKConstants.h:62
proxygen::HPACKEncoder::encodeAsIndex
void encodeAsIndex(uint32_t index)
Definition:
HPACKEncoder.cpp:63
proxygen::HPACKEncoder::encodeAsLiteral
bool encodeAsLiteral(const HPACKHeader &header, bool indexing)
Definition:
HPACKEncoder.cpp:28
proxygen::HPACKEncoder::encodeLiteral
void encodeLiteral(const HPACKHeader &header, uint32_t nameIndex, const HPACK::Instruction &instruction)
Definition:
HPACKEncoder.cpp:48
IOBuf.h
proxygen::HPACKEncoder
Definition:
HPACKEncoder.h:19
proxygen::HPACKContext::nameIndex
uint32_t nameIndex(const HPACKHeaderName &headerName) const
Definition:
HPACKContext.cpp:52
proxygen::HPACKContext::table_
HeaderTable table_
Definition:
HPACKContext.h:86
proxygen::HPACKEncoder::HPACKEncoder
HPACKEncoder(bool huffman, uint32_t tableSize=HPACK::kTableSize)
Definition:
HPACKEncoder.h:22
proxygen::HPACKContext
Definition:
HPACKContext.h:18
proxygen::HPACKEncoder::encodeHeader
void encodeHeader(const HPACKHeader &header)
Definition:
HPACKEncoder.cpp:68
folly::size
constexpr auto size(C const &c) -> decltype(c.size())
Definition:
Access.h:45
proxygen::HPACKHeader
Definition:
HPACKHeader.h:20
proxygen::HPACKEncoder::setHeaderTableSize
void setHeaderTableSize(uint32_t size)
Definition:
HPACKEncoder.h:35
HPACKConstants.h
proxygen::HPACKEncoder::encode
std::unique_ptr< folly::IOBuf > encode(const std::vector< HPACKHeader > &headers, uint32_t headroom=0)
Definition:
HPACKEncoder.cpp:17
proxygen::HPACKEncoderBase::setHeaderTableSize
void setHeaderTableSize(HeaderTable &table, uint32_t size)
Definition:
HPACKEncoderBase.h:36
proxygen::HPACKEncoderBase
Definition:
HPACKEncoderBase.h:21
proxygen
Definition:
ExMessageHandler.h:14
uint32_t
uint32_t
Definition:
ConstexprMathBenchmark.cpp:186
HPACKEncoderBase.h
proxygen::HPACK::Instruction
Definition:
HPACKConstants.h:19
proxygen
lib
http
codec
compress
HPACKEncoder.h
Generated by
1.8.11