OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "net/quic/test_tools/simple_quic_framer.h" | 5 #include "net/quic/test_tools/simple_quic_framer.h" |
6 | 6 |
7 #include "base/stl_util.h" | 7 #include "base/stl_util.h" |
8 #include "net/quic/crypto/crypto_framer.h" | 8 #include "net/quic/crypto/crypto_framer.h" |
9 #include "net/quic/crypto/quic_decrypter.h" | 9 #include "net/quic/crypto/quic_decrypter.h" |
10 #include "net/quic/crypto/quic_encrypter.h" | 10 #include "net/quic/crypto/quic_encrypter.h" |
11 | 11 |
12 using base::StringPiece; | 12 using base::StringPiece; |
13 using std::string; | 13 using std::string; |
14 using std::vector; | 14 using std::vector; |
15 | 15 |
16 namespace net { | 16 namespace net { |
17 namespace test { | 17 namespace test { |
18 | 18 |
19 class SimpleFramerVisitor : public QuicFramerVisitorInterface { | 19 class SimpleFramerVisitor : public QuicFramerVisitorInterface { |
20 public: | 20 public: |
21 SimpleFramerVisitor() | 21 SimpleFramerVisitor() : error_(QUIC_NO_ERROR) {} |
22 : error_(QUIC_NO_ERROR) { | |
23 } | |
24 | 22 |
25 virtual ~SimpleFramerVisitor() { | 23 virtual ~SimpleFramerVisitor() { STLDeleteElements(&stream_data_); } |
26 STLDeleteElements(&stream_data_); | |
27 } | |
28 | 24 |
29 virtual void OnError(QuicFramer* framer) OVERRIDE { | 25 virtual void OnError(QuicFramer* framer) OVERRIDE { |
30 error_ = framer->error(); | 26 error_ = framer->error(); |
31 } | 27 } |
32 | 28 |
33 virtual bool OnProtocolVersionMismatch(QuicVersion version) OVERRIDE { | 29 virtual bool OnProtocolVersionMismatch(QuicVersion version) OVERRIDE { |
34 return false; | 30 return false; |
35 } | 31 } |
36 | 32 |
37 virtual void OnPacket() OVERRIDE {} | 33 virtual void OnPacket() OVERRIDE {} |
38 virtual void OnPublicResetPacket( | 34 virtual void OnPublicResetPacket( |
39 const QuicPublicResetPacket& packet) OVERRIDE { | 35 const QuicPublicResetPacket& packet) OVERRIDE { |
40 public_reset_packet_.reset(new QuicPublicResetPacket(packet)); | 36 public_reset_packet_.reset(new QuicPublicResetPacket(packet)); |
41 } | 37 } |
42 virtual void OnVersionNegotiationPacket( | 38 virtual void OnVersionNegotiationPacket( |
43 const QuicVersionNegotiationPacket& packet) OVERRIDE { | 39 const QuicVersionNegotiationPacket& packet) OVERRIDE { |
44 version_negotiation_packet_.reset( | 40 version_negotiation_packet_.reset(new QuicVersionNegotiationPacket(packet)); |
45 new QuicVersionNegotiationPacket(packet)); | |
46 } | 41 } |
47 virtual void OnRevivedPacket() OVERRIDE {} | 42 virtual void OnRevivedPacket() OVERRIDE {} |
48 | 43 |
49 virtual bool OnUnauthenticatedPublicHeader( | 44 virtual bool OnUnauthenticatedPublicHeader( |
50 const QuicPacketPublicHeader& header) OVERRIDE { | 45 const QuicPacketPublicHeader& header) OVERRIDE { |
51 return true; | 46 return true; |
52 } | 47 } |
53 virtual bool OnUnauthenticatedHeader( | 48 virtual bool OnUnauthenticatedHeader( |
54 const QuicPacketHeader& header) OVERRIDE { | 49 const QuicPacketHeader& header) OVERRIDE { |
55 return true; | 50 return true; |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 } | 139 } |
145 const vector<QuicRstStreamFrame>& rst_stream_frames() const { | 140 const vector<QuicRstStreamFrame>& rst_stream_frames() const { |
146 return rst_stream_frames_; | 141 return rst_stream_frames_; |
147 } | 142 } |
148 const vector<QuicStreamFrame>& stream_frames() const { | 143 const vector<QuicStreamFrame>& stream_frames() const { |
149 return stream_frames_; | 144 return stream_frames_; |
150 } | 145 } |
151 const vector<QuicStopWaitingFrame>& stop_waiting_frames() const { | 146 const vector<QuicStopWaitingFrame>& stop_waiting_frames() const { |
152 return stop_waiting_frames_; | 147 return stop_waiting_frames_; |
153 } | 148 } |
154 const vector<QuicPingFrame>& ping_frames() const { | 149 const vector<QuicPingFrame>& ping_frames() const { return ping_frames_; } |
155 return ping_frames_; | 150 const QuicFecData& fec_data() const { return fec_data_; } |
156 } | |
157 const QuicFecData& fec_data() const { | |
158 return fec_data_; | |
159 } | |
160 const QuicVersionNegotiationPacket* version_negotiation_packet() const { | 151 const QuicVersionNegotiationPacket* version_negotiation_packet() const { |
161 return version_negotiation_packet_.get(); | 152 return version_negotiation_packet_.get(); |
162 } | 153 } |
163 const QuicPublicResetPacket* public_reset_packet() const { | 154 const QuicPublicResetPacket* public_reset_packet() const { |
164 return public_reset_packet_.get(); | 155 return public_reset_packet_.get(); |
165 } | 156 } |
166 | 157 |
167 private: | 158 private: |
168 QuicErrorCode error_; | 159 QuicErrorCode error_; |
169 bool has_header_; | 160 bool has_header_; |
(...skipping 22 matching lines...) Expand all Loading... |
192 } | 183 } |
193 | 184 |
194 SimpleQuicFramer::SimpleQuicFramer(const QuicVersionVector& supported_versions) | 185 SimpleQuicFramer::SimpleQuicFramer(const QuicVersionVector& supported_versions) |
195 : framer_(supported_versions, QuicTime::Zero(), true) { | 186 : framer_(supported_versions, QuicTime::Zero(), true) { |
196 } | 187 } |
197 | 188 |
198 SimpleQuicFramer::~SimpleQuicFramer() { | 189 SimpleQuicFramer::~SimpleQuicFramer() { |
199 } | 190 } |
200 | 191 |
201 bool SimpleQuicFramer::ProcessPacket(const QuicPacket& packet) { | 192 bool SimpleQuicFramer::ProcessPacket(const QuicPacket& packet) { |
202 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPacket( | 193 scoped_ptr<QuicEncryptedPacket> encrypted( |
203 ENCRYPTION_NONE, 0, packet)); | 194 framer_.EncryptPacket(ENCRYPTION_NONE, 0, packet)); |
204 return ProcessPacket(*encrypted); | 195 return ProcessPacket(*encrypted); |
205 } | 196 } |
206 | 197 |
207 bool SimpleQuicFramer::ProcessPacket(const QuicEncryptedPacket& packet) { | 198 bool SimpleQuicFramer::ProcessPacket(const QuicEncryptedPacket& packet) { |
208 visitor_.reset(new SimpleFramerVisitor); | 199 visitor_.reset(new SimpleFramerVisitor); |
209 framer_.set_visitor(visitor_.get()); | 200 framer_.set_visitor(visitor_.get()); |
210 return framer_.ProcessPacket(packet); | 201 return framer_.ProcessPacket(packet); |
211 } | 202 } |
212 | 203 |
213 void SimpleQuicFramer::Reset() { | 204 void SimpleQuicFramer::Reset() { |
214 visitor_.reset(new SimpleFramerVisitor); | 205 visitor_.reset(new SimpleFramerVisitor); |
215 } | 206 } |
216 | 207 |
217 | |
218 const QuicPacketHeader& SimpleQuicFramer::header() const { | 208 const QuicPacketHeader& SimpleQuicFramer::header() const { |
219 return visitor_->header(); | 209 return visitor_->header(); |
220 } | 210 } |
221 | 211 |
222 const QuicFecData& SimpleQuicFramer::fec_data() const { | 212 const QuicFecData& SimpleQuicFramer::fec_data() const { |
223 return visitor_->fec_data(); | 213 return visitor_->fec_data(); |
224 } | 214 } |
225 | 215 |
226 const QuicVersionNegotiationPacket* | 216 const QuicVersionNegotiationPacket* |
227 SimpleQuicFramer::version_negotiation_packet() const { | 217 SimpleQuicFramer::version_negotiation_packet() const { |
228 return visitor_->version_negotiation_packet(); | 218 return visitor_->version_negotiation_packet(); |
229 } | 219 } |
230 | 220 |
231 const QuicPublicResetPacket* SimpleQuicFramer::public_reset_packet() const { | 221 const QuicPublicResetPacket* SimpleQuicFramer::public_reset_packet() const { |
232 return visitor_->public_reset_packet(); | 222 return visitor_->public_reset_packet(); |
233 } | 223 } |
234 | 224 |
235 QuicFramer* SimpleQuicFramer::framer() { | 225 QuicFramer* SimpleQuicFramer::framer() { |
236 return &framer_; | 226 return &framer_; |
237 } | 227 } |
238 | 228 |
239 size_t SimpleQuicFramer::num_frames() const { | 229 size_t SimpleQuicFramer::num_frames() const { |
240 return ack_frames().size() + | 230 return ack_frames().size() + feedback_frames().size() + |
241 feedback_frames().size() + | 231 goaway_frames().size() + rst_stream_frames().size() + |
242 goaway_frames().size() + | 232 stop_waiting_frames().size() + stream_frames().size() + |
243 rst_stream_frames().size() + | 233 ping_frames().size() + connection_close_frames().size(); |
244 stop_waiting_frames().size() + | |
245 stream_frames().size() + | |
246 ping_frames().size() + | |
247 connection_close_frames().size(); | |
248 } | 234 } |
249 | 235 |
250 const vector<QuicAckFrame>& SimpleQuicFramer::ack_frames() const { | 236 const vector<QuicAckFrame>& SimpleQuicFramer::ack_frames() const { |
251 return visitor_->ack_frames(); | 237 return visitor_->ack_frames(); |
252 } | 238 } |
253 | 239 |
254 const vector<QuicStopWaitingFrame>& | 240 const vector<QuicStopWaitingFrame>& SimpleQuicFramer::stop_waiting_frames() |
255 SimpleQuicFramer::stop_waiting_frames() const { | 241 const { |
256 return visitor_->stop_waiting_frames(); | 242 return visitor_->stop_waiting_frames(); |
257 } | 243 } |
258 | 244 |
259 const vector<QuicPingFrame>& SimpleQuicFramer::ping_frames() const { | 245 const vector<QuicPingFrame>& SimpleQuicFramer::ping_frames() const { |
260 return visitor_->ping_frames(); | 246 return visitor_->ping_frames(); |
261 } | 247 } |
262 | 248 |
263 const vector<QuicStreamFrame>& SimpleQuicFramer::stream_frames() const { | 249 const vector<QuicStreamFrame>& SimpleQuicFramer::stream_frames() const { |
264 return visitor_->stream_frames(); | 250 return visitor_->stream_frames(); |
265 } | 251 } |
266 | 252 |
267 const vector<QuicRstStreamFrame>& SimpleQuicFramer::rst_stream_frames() const { | 253 const vector<QuicRstStreamFrame>& SimpleQuicFramer::rst_stream_frames() const { |
268 return visitor_->rst_stream_frames(); | 254 return visitor_->rst_stream_frames(); |
269 } | 255 } |
270 | 256 |
271 const vector<QuicCongestionFeedbackFrame>& | 257 const vector<QuicCongestionFeedbackFrame>& SimpleQuicFramer::feedback_frames() |
272 SimpleQuicFramer::feedback_frames() const { | 258 const { |
273 return visitor_->feedback_frames(); | 259 return visitor_->feedback_frames(); |
274 } | 260 } |
275 | 261 |
276 const vector<QuicGoAwayFrame>& | 262 const vector<QuicGoAwayFrame>& SimpleQuicFramer::goaway_frames() const { |
277 SimpleQuicFramer::goaway_frames() const { | |
278 return visitor_->goaway_frames(); | 263 return visitor_->goaway_frames(); |
279 } | 264 } |
280 | 265 |
281 const vector<QuicConnectionCloseFrame>& | 266 const vector<QuicConnectionCloseFrame>& |
282 SimpleQuicFramer::connection_close_frames() const { | 267 SimpleQuicFramer::connection_close_frames() const { |
283 return visitor_->connection_close_frames(); | 268 return visitor_->connection_close_frames(); |
284 } | 269 } |
285 | 270 |
286 } // namespace test | 271 } // namespace test |
287 } // namespace net | 272 } // namespace net |
OLD | NEW |