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

Side by Side Diff: net/http2/http2_constants.cc

Issue 2554683003: Revert of Add new HTTP/2 and HPACK decoder in net/http2/. (Closed)
Patch Set: Created 4 years 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
« no previous file with comments | « net/http2/http2_constants.h ('k') | net/http2/http2_constants_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // 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 #include "net/http2/http2_constants.h"
6
7 #include <ios>
8 #include <sstream>
9
10 #include "base/logging.h"
11 #include "base/strings/string_piece.h"
12 #include "base/strings/stringprintf.h"
13
14 using base::StringPrintf;
15 using std::string;
16
17 namespace net {
18
19 string Http2FrameTypeToString(Http2FrameType v) {
20 switch (v) {
21 case Http2FrameType::DATA:
22 return "DATA";
23 case Http2FrameType::HEADERS:
24 return "HEADERS";
25 case Http2FrameType::PRIORITY:
26 return "PRIORITY";
27 case Http2FrameType::RST_STREAM:
28 return "RST_STREAM";
29 case Http2FrameType::SETTINGS:
30 return "SETTINGS";
31 case Http2FrameType::PUSH_PROMISE:
32 return "PUSH_PROMISE";
33 case Http2FrameType::PING:
34 return "PING";
35 case Http2FrameType::GOAWAY:
36 return "GOAWAY";
37 case Http2FrameType::WINDOW_UPDATE:
38 return "WINDOW_UPDATE";
39 case Http2FrameType::CONTINUATION:
40 return "CONTINUATION";
41 case Http2FrameType::ALTSVC:
42 return "ALTSVC";
43 }
44 std::stringstream ss;
45 ss << "UnknownFrameType(" << static_cast<int>(v) << ")";
46 return ss.str();
47 }
48 string Http2FrameTypeToString(uint8_t v) {
49 return Http2FrameTypeToString(static_cast<Http2FrameType>(v));
50 }
51
52 string Http2FrameFlagsToString(Http2FrameType type, uint8_t flags) {
53 string s;
54 // Closure to append flag name |v| to the string |s|, and to clear
55 // |bit| from |flags|.
56 auto append_and_clear = [&s, &flags](base::StringPiece v, uint8_t bit) {
57 if (!s.empty()) {
58 s.push_back('|');
59 }
60 v.AppendToString(&s);
61 flags ^= bit;
62 };
63 if (flags & 0x01) {
64 if (type == Http2FrameType::DATA || type == Http2FrameType::HEADERS) {
65 append_and_clear("END_STREAM", Http2FrameFlag::FLAG_END_STREAM);
66 } else if (type == Http2FrameType::SETTINGS ||
67 type == Http2FrameType::PING) {
68 append_and_clear("ACK", Http2FrameFlag::FLAG_ACK);
69 }
70 }
71 if (flags & 0x04) {
72 if (type == Http2FrameType::HEADERS ||
73 type == Http2FrameType::PUSH_PROMISE ||
74 type == Http2FrameType::CONTINUATION) {
75 append_and_clear("END_HEADERS", Http2FrameFlag::FLAG_END_HEADERS);
76 }
77 }
78 if (flags & 0x08) {
79 if (type == Http2FrameType::DATA || type == Http2FrameType::HEADERS ||
80 type == Http2FrameType::PUSH_PROMISE) {
81 append_and_clear("PADDED", Http2FrameFlag::FLAG_PADDED);
82 }
83 }
84 if (flags & 0x20) {
85 if (type == Http2FrameType::HEADERS) {
86 append_and_clear("PRIORITY", Http2FrameFlag::FLAG_PRIORITY);
87 }
88 }
89 if (flags != 0) {
90 append_and_clear(StringPrintf("0x%02x", flags), flags);
91 }
92 DCHECK_EQ(0, flags);
93 return s;
94 }
95 string Http2FrameFlagsToString(uint8_t type, uint8_t flags) {
96 return Http2FrameFlagsToString(static_cast<Http2FrameType>(type), flags);
97 }
98
99 string Http2ErrorCodeToString(uint32_t v) {
100 switch (v) {
101 case 0x0:
102 return "NO_ERROR";
103 case 0x1:
104 return "PROTOCOL_ERROR";
105 case 0x2:
106 return "INTERNAL_ERROR";
107 case 0x3:
108 return "FLOW_CONTROL_ERROR";
109 case 0x4:
110 return "SETTINGS_TIMEOUT";
111 case 0x5:
112 return "STREAM_CLOSED";
113 case 0x6:
114 return "FRAME_SIZE_ERROR";
115 case 0x7:
116 return "REFUSED_STREAM";
117 case 0x8:
118 return "CANCEL";
119 case 0x9:
120 return "COMPRESSION_ERROR";
121 case 0xa:
122 return "CONNECT_ERROR";
123 case 0xb:
124 return "ENHANCE_YOUR_CALM";
125 case 0xc:
126 return "INADEQUATE_SECURITY";
127 case 0xd:
128 return "HTTP_1_1_REQUIRED";
129 }
130 std::stringstream ss;
131 ss << "UnknownErrorCode(0x" << std::hex << v << ")";
132 return ss.str();
133 }
134 string Http2ErrorCodeToString(Http2ErrorCode v) {
135 return Http2ErrorCodeToString(static_cast<uint32_t>(v));
136 }
137
138 string Http2SettingsParameterToString(uint32_t v) {
139 switch (v) {
140 case 0x1:
141 return "HEADER_TABLE_SIZE";
142 case 0x2:
143 return "ENABLE_PUSH";
144 case 0x3:
145 return "MAX_CONCURRENT_STREAMS";
146 case 0x4:
147 return "INITIAL_WINDOW_SIZE";
148 case 0x5:
149 return "MAX_FRAME_SIZE";
150 case 0x6:
151 return "MAX_HEADER_LIST_SIZE";
152 }
153 std::stringstream ss;
154 ss << "UnknownSettingsParameter(0x" << std::hex << v << ")";
155 return ss.str();
156 }
157 string Http2SettingsParameterToString(Http2SettingsParameter v) {
158 return Http2SettingsParameterToString(static_cast<uint32_t>(v));
159 }
160
161 } // namespace net
OLDNEW
« no previous file with comments | « net/http2/http2_constants.h ('k') | net/http2/http2_constants_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698