Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(236)

Side by Side Diff: net/spdy/hpack_constants.h

Issue 265763011: Land recent SPDY changes (through 66310528) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/spdy/fuzzing/hpack_fuzz_util_test.cc ('k') | net/spdy/hpack_constants.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef NET_SPDY_HPACK_CONSTANTS_H_ 5 #ifndef NET_SPDY_HPACK_CONSTANTS_H_
6 #define NET_SPDY_HPACK_CONSTANTS_H_ 6 #define NET_SPDY_HPACK_CONSTANTS_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "net/base/net_export.h" 11 #include "net/base/net_export.h"
12 12
13 // All section references below are to 13 // All section references below are to
14 // http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-06 14 // http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-07
15 15
16 namespace net { 16 namespace net {
17 17
18 // An HpackPrefix signifies |bits| stored in the top |bit_size| bits 18 // An HpackPrefix signifies |bits| stored in the top |bit_size| bits
19 // of an octet. 19 // of an octet.
20 struct HpackPrefix { 20 struct HpackPrefix {
21 uint8 bits; 21 uint8 bits;
22 size_t bit_size; 22 size_t bit_size;
23 }; 23 };
24 24
(...skipping 10 matching lines...) Expand all
35 35
36 // Largest string literal an HpackDecoder/HpackEncoder will attempt to process 36 // Largest string literal an HpackDecoder/HpackEncoder will attempt to process
37 // before returning an error. 37 // before returning an error.
38 const uint32 kDefaultMaxStringLiteralSize = 16 * 1024; 38 const uint32 kDefaultMaxStringLiteralSize = 16 * 1024;
39 39
40 // Maximum amount of encoded header buffer HpackDecoder will retain before 40 // Maximum amount of encoded header buffer HpackDecoder will retain before
41 // returning an error. 41 // returning an error.
42 // TODO(jgraettinger): Remove with SpdyHeadersHandlerInterface switch. 42 // TODO(jgraettinger): Remove with SpdyHeadersHandlerInterface switch.
43 const uint32 kMaxDecodeBufferSize = 32 * 1024; 43 const uint32 kMaxDecodeBufferSize = 32 * 1024;
44 44
45 // The marker for a string literal that is stored unmodified (i.e., 45 // 4.1.2: Flag for a string literal that is stored unmodified (i.e.,
46 // without Huffman encoding) (from 4.1.2). 46 // without Huffman encoding).
47 const HpackPrefix kStringLiteralIdentityEncoded = { 0x0, 1 }; 47 const HpackPrefix kStringLiteralIdentityEncoded = { 0x0, 1 };
48 48
49 // The marker for a string literal that is stored with Huffman 49 // 4.1.2: Flag for a Huffman-coded string literal.
50 // encoding (from 4.1.2).
51 const HpackPrefix kStringLiteralHuffmanEncoded = { 0x1, 1 }; 50 const HpackPrefix kStringLiteralHuffmanEncoded = { 0x1, 1 };
52 51
53 // The opcode for an encoding context update (from 4.2). 52 // 4.2: Opcode for an indexed header field.
54 // This is an indexed header representation with special index zero,
55 // and as such this opcode must be tested prior to |kIndexedOpcode|.
56 const HpackPrefix kEncodingContextOpcode = { 0x80, 8 };
57
58 // Follows an |kEncodingContextOpcode| to indicate the reference set should be
59 // cleared. (Section 4.4).
60 const HpackPrefix kEncodingContextEmptyReferenceSet = { 0x80, 8 };
61
62 // Follows an |kEncodingContextOpcode| to indicate the encoder is using a new
63 // maximum headers table size. (Section 4.4).
64 const HpackPrefix kEncodingContextNewMaximumSize = { 0x0, 1 };
65
66 // The opcode for an indexed header field (from 4.2).
67 const HpackPrefix kIndexedOpcode = { 0x1, 1 }; 53 const HpackPrefix kIndexedOpcode = { 0x1, 1 };
68 54
69 // The opcode for a literal header field without indexing (from 55 // 4.3.1: Opcode for a literal header field with incremental indexing.
70 // 4.3.1). 56 const HpackPrefix kLiteralIncrementalIndexOpcode = { 0x1, 2 };
71 const HpackPrefix kLiteralNoIndexOpcode = { 0x01, 2 };
72 57
73 // The opcode for a literal header field with incremental indexing 58 // 4.3.2: Opcode for a literal header field without indexing.
74 // (from 4.3.2). 59 const HpackPrefix kLiteralNoIndexOpcode = { 0x0, 4 };
75 const HpackPrefix kLiteralIncrementalIndexOpcode = { 0x00, 2 }; 60
61 // 4.3.3: Opcode for a literal header field which is never indexed.
62 const HpackPrefix kLiteralNeverIndexOpcode = { 0x1, 4 };
63
64 // 4.4: Opcode for an encoding context update.
65 const HpackPrefix kEncodingContextOpcode = { 0x1, 3 };
66
67 // 4.4: Flag following an |kEncodingContextOpcode|, which indicates
68 // the reference set should be cleared.
69 const HpackPrefix kEncodingContextEmptyReferenceSet = { 0x10, 5 };
70
71 // 4.4: Flag following an |kEncodingContextOpcode|, which indicates
72 // the encoder is using a new maximum headers table size. Begins a
73 // varint-encoded table size with a 4-bit prefix.
74 const HpackPrefix kEncodingContextNewMaximumSize = { 0x0, 1 };
76 75
77 // Returns symbol code table from "Appendix C. Huffman Codes". 76 // Returns symbol code table from "Appendix C. Huffman Codes".
78 NET_EXPORT_PRIVATE std::vector<HpackHuffmanSymbol> HpackHuffmanCode(); 77 NET_EXPORT_PRIVATE std::vector<HpackHuffmanSymbol> HpackHuffmanCode();
79 78
80 // Returns a HpackHuffmanTable instance initialized with |kHpackHuffmanCode|. 79 // Returns a HpackHuffmanTable instance initialized with |kHpackHuffmanCode|.
81 // The instance is read-only, has static lifetime, and is safe to share amoung 80 // The instance is read-only, has static lifetime, and is safe to share amoung
82 // threads. This function is thread-safe. 81 // threads. This function is thread-safe.
83 NET_EXPORT_PRIVATE const HpackHuffmanTable& ObtainHpackHuffmanTable(); 82 NET_EXPORT_PRIVATE const HpackHuffmanTable& ObtainHpackHuffmanTable();
84 83
85 } // namespace net 84 } // namespace net
86 85
87 #endif // NET_SPDY_HPACK_CONSTANTS_H_ 86 #endif // NET_SPDY_HPACK_CONSTANTS_H_
OLDNEW
« no previous file with comments | « net/spdy/fuzzing/hpack_fuzz_util_test.cc ('k') | net/spdy/hpack_constants.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698