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

Side by Side Diff: net/spdy/spdy_framer_decoder_adapter.cc

Issue 2832973003: Split net/spdy into core and chromium subdirectories. (Closed)
Patch Set: Fix some more build rules. Created 3 years, 8 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
« no previous file with comments | « net/spdy/spdy_framer_decoder_adapter.h ('k') | net/spdy/spdy_framer_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 (c) 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/spdy/spdy_framer_decoder_adapter.h"
6
7 #include <memory>
8 #include <utility>
9
10 #include "base/format_macros.h"
11 #include "base/logging.h"
12 #include "net/spdy/platform/api/spdy_estimate_memory_usage.h"
13 #include "net/spdy/platform/api/spdy_string_utils.h"
14
15 #if defined(COMPILER_GCC)
16 #define PRETTY_THIS SpdyStringPrintf("%s@%p ", __PRETTY_FUNCTION__, this)
17 #elif defined(COMPILER_MSVC)
18 #define PRETTY_THIS SpdyStringPrintf("%s@%p ", __FUNCSIG__, this)
19 #else
20 #define PRETTY_THIS SpdyStringPrintf("%s@%p ", __func__, this)
21 #endif
22
23 namespace net {
24
25 SpdyFramerDecoderAdapter::SpdyFramerDecoderAdapter() {
26 DVLOG(1) << PRETTY_THIS;
27 }
28
29 SpdyFramerDecoderAdapter::~SpdyFramerDecoderAdapter() {
30 DVLOG(1) << PRETTY_THIS;
31 }
32
33 void SpdyFramerDecoderAdapter::set_visitor(
34 SpdyFramerVisitorInterface* visitor) {
35 visitor_ = visitor;
36 }
37
38 void SpdyFramerDecoderAdapter::set_debug_visitor(
39 SpdyFramerDebugVisitorInterface* debug_visitor) {
40 debug_visitor_ = debug_visitor;
41 }
42
43 void SpdyFramerDecoderAdapter::set_process_single_input_frame(bool v) {
44 process_single_input_frame_ = v;
45 }
46
47 void SpdyFramerVisitorAdapter::OnError(SpdyFramer* framer) {
48 visitor_->OnError(framer_);
49 }
50
51 void SpdyFramerVisitorAdapter::OnCommonHeader(SpdyStreamId stream_id,
52 size_t length,
53 uint8_t type,
54 uint8_t flags) {
55 visitor_->OnCommonHeader(stream_id, length, type, flags);
56 }
57
58 void SpdyFramerVisitorAdapter::OnDataFrameHeader(SpdyStreamId stream_id,
59 size_t length,
60 bool fin) {
61 visitor_->OnDataFrameHeader(stream_id, length, fin);
62 }
63
64 void SpdyFramerVisitorAdapter::OnStreamFrameData(SpdyStreamId stream_id,
65 const char* data,
66 size_t len) {
67 visitor_->OnStreamFrameData(stream_id, data, len);
68 }
69
70 void SpdyFramerVisitorAdapter::OnStreamEnd(SpdyStreamId stream_id) {
71 visitor_->OnStreamEnd(stream_id);
72 }
73
74 void SpdyFramerVisitorAdapter::OnStreamPadding(SpdyStreamId stream_id,
75 size_t len) {
76 visitor_->OnStreamPadding(stream_id, len);
77 }
78
79 SpdyHeadersHandlerInterface* SpdyFramerVisitorAdapter::OnHeaderFrameStart(
80 SpdyStreamId stream_id) {
81 return visitor_->OnHeaderFrameStart(stream_id);
82 }
83
84 void SpdyFramerVisitorAdapter::OnHeaderFrameEnd(SpdyStreamId stream_id,
85 bool end_headers) {
86 visitor_->OnHeaderFrameEnd(stream_id, end_headers);
87 }
88
89 void SpdyFramerVisitorAdapter::OnRstStream(SpdyStreamId stream_id,
90 SpdyErrorCode error_code) {
91 visitor_->OnRstStream(stream_id, error_code);
92 }
93
94 void SpdyFramerVisitorAdapter::OnSetting(SpdySettingsIds id,
95 uint32_t value) {
96 visitor_->OnSetting(id, value);
97 }
98
99 void SpdyFramerVisitorAdapter::OnPing(SpdyPingId unique_id, bool is_ack) {
100 visitor_->OnPing(unique_id, is_ack);
101 }
102
103 void SpdyFramerVisitorAdapter::OnSettings(bool clear_persisted) {
104 visitor_->OnSettings(clear_persisted);
105 }
106
107 void SpdyFramerVisitorAdapter::OnSettingsAck() {
108 visitor_->OnSettingsAck();
109 }
110
111 void SpdyFramerVisitorAdapter::OnSettingsEnd() {
112 visitor_->OnSettingsEnd();
113 }
114
115 void SpdyFramerVisitorAdapter::OnGoAway(SpdyStreamId last_accepted_stream_id,
116 SpdyErrorCode error_code) {
117 visitor_->OnGoAway(last_accepted_stream_id, error_code);
118 }
119
120 void SpdyFramerVisitorAdapter::OnHeaders(SpdyStreamId stream_id,
121 bool has_priority,
122 int weight,
123 SpdyStreamId parent_stream_id,
124 bool exclusive,
125 bool fin,
126 bool end) {
127 visitor_->OnHeaders(stream_id, has_priority, weight, parent_stream_id,
128 exclusive, fin, end);
129 }
130
131 void SpdyFramerVisitorAdapter::OnWindowUpdate(SpdyStreamId stream_id,
132 int delta_window_size) {
133 visitor_->OnWindowUpdate(stream_id, delta_window_size);
134 }
135
136 bool SpdyFramerVisitorAdapter::OnGoAwayFrameData(const char* goaway_data,
137 size_t len) {
138 return visitor_->OnGoAwayFrameData(goaway_data, len);
139 }
140
141 void SpdyFramerVisitorAdapter::OnPushPromise(SpdyStreamId stream_id,
142 SpdyStreamId promised_stream_id,
143 bool end) {
144 visitor_->OnPushPromise(stream_id, promised_stream_id, end);
145 }
146
147 void SpdyFramerVisitorAdapter::OnContinuation(SpdyStreamId stream_id,
148 bool end) {
149 visitor_->OnContinuation(stream_id, end);
150 }
151
152 void SpdyFramerVisitorAdapter::OnPriority(SpdyStreamId stream_id,
153 SpdyStreamId parent_id,
154 int weight,
155 bool exclusive) {
156 visitor_->OnPriority(stream_id, parent_id, weight, exclusive);
157 }
158
159 void SpdyFramerVisitorAdapter::OnAltSvc(
160 SpdyStreamId stream_id,
161 SpdyStringPiece origin,
162 const SpdyAltSvcWireFormat::AlternativeServiceVector& altsvc_vector) {
163 visitor_->OnAltSvc(stream_id, origin, altsvc_vector);
164 }
165
166 bool SpdyFramerVisitorAdapter::OnUnknownFrame(SpdyStreamId stream_id,
167 uint8_t frame_type) {
168 return visitor_->OnUnknownFrame(stream_id, frame_type);
169 }
170
171 class NestedSpdyFramerDecoder : public SpdyFramerDecoderAdapter {
172 typedef SpdyFramer::SpdyState SpdyState;
173 typedef SpdyFramer::SpdyFramerError SpdyFramerError;
174
175 public:
176 explicit NestedSpdyFramerDecoder(SpdyFramer* outer)
177 : framer_(nullptr,
178 outer->compression_enabled() ? SpdyFramer::ENABLE_COMPRESSION
179 : SpdyFramer::DISABLE_COMPRESSION),
180 outer_(outer) {
181 DVLOG(1) << PRETTY_THIS;
182 }
183 ~NestedSpdyFramerDecoder() override { DVLOG(1) << PRETTY_THIS; }
184
185 // Wrap the visitor in a SpdyFramerVisitorAdapter so that the correct
186 // SpdyFramer instance is passed to OnError. Passes the call on to the
187 // base adapter class and wrapped SpdyFramer.
188 void set_visitor(SpdyFramerVisitorInterface* visitor) override {
189 visitor_adapter_.reset(new SpdyFramerVisitorAdapter(visitor, outer_));
190 SpdyFramerDecoderAdapter::set_visitor(visitor_adapter_.get());
191 framer_.set_visitor(visitor_adapter_.get());
192 }
193
194 void set_extension_visitor(ExtensionVisitorInterface* visitor) override {
195 framer_.set_extension_visitor(visitor);
196 }
197
198 // Passes the call on to the base adapter class and wrapped SpdyFramer.
199 void set_debug_visitor(
200 SpdyFramerDebugVisitorInterface* debug_visitor) override {
201 SpdyFramerDecoderAdapter::set_debug_visitor(debug_visitor);
202 framer_.set_debug_visitor(debug_visitor);
203 }
204
205 // Passes the call on to the wrapped SpdyFramer.
206 void SetDecoderHeaderTableDebugVisitor(
207 std::unique_ptr<HpackHeaderTable::DebugVisitorInterface> visitor)
208 override {
209 framer_.SetDecoderHeaderTableDebugVisitor(std::move(visitor));
210 }
211
212 // Passes the call on to the base adapter class and wrapped SpdyFramer.
213 void set_process_single_input_frame(bool v) override {
214 SpdyFramerDecoderAdapter::set_process_single_input_frame(v);
215 framer_.set_process_single_input_frame(v);
216 }
217
218 size_t ProcessInput(const char* data, size_t len) override {
219 DVLOG(2) << "ProcessInput(data, " << len << ")";
220 size_t result = framer_.ProcessInput(data, len);
221 DVLOG(2) << "ProcessInput(data, " << len << ") returning " << result;
222 return result;
223 }
224
225 void Reset() override { framer_.Reset(); }
226
227 SpdyFramer::SpdyFramerError spdy_framer_error() const override {
228 return framer_.spdy_framer_error();
229 }
230 SpdyFramer::SpdyState state() const override { return framer_.state(); }
231 bool probable_http_response() const override {
232 return framer_.probable_http_response();
233 }
234 size_t EstimateMemoryUsage() const override {
235 // Skip |visitor_adapter_| because it doesn't allocate.
236 return SpdyEstimateMemoryUsage(framer_);
237 }
238
239 private:
240 SpdyFramer framer_;
241 SpdyFramer* const outer_;
242 std::unique_ptr<SpdyFramerVisitorAdapter> visitor_adapter_;
243 };
244
245 std::unique_ptr<SpdyFramerDecoderAdapter> CreateNestedSpdyFramerDecoder(
246 SpdyFramer* outer) {
247 return std::unique_ptr<SpdyFramerDecoderAdapter>(
248 new NestedSpdyFramerDecoder(outer));
249 }
250
251 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_framer_decoder_adapter.h ('k') | net/spdy/spdy_framer_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698