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

Side by Side Diff: net/quic/quic_connection.h

Issue 17518002: Add logging to the QUIC write path. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 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
OLDNEW
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 // The entity that handles framing writes for a Quic client or server. 5 // The entity that handles framing writes for a Quic client or server.
6 // Each QuicSession will have a connection associated with it. 6 // Each QuicSession will have a connection associated with it.
7 // 7 //
8 // On the server side, the Dispatcher handles the raw reads, and hands off 8 // On the server side, the Dispatcher handles the raw reads, and hands off
9 // packets via ProcessUdpPacket for framing and processing. 9 // packets via ProcessUdpPacket for framing and processing.
10 // 10 //
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 74
75 // Called when a blocked socket becomes writable. If all pending bytes for 75 // Called when a blocked socket becomes writable. If all pending bytes for
76 // this visitor are consumed by the connection successfully this should 76 // this visitor are consumed by the connection successfully this should
77 // return true, otherwise it should return false. 77 // return true, otherwise it should return false.
78 virtual bool OnCanWrite() = 0; 78 virtual bool OnCanWrite() = 0;
79 }; 79 };
80 80
81 // Interface which gets callbacks from the QuicConnection at interesting 81 // Interface which gets callbacks from the QuicConnection at interesting
82 // points. Implementations must not mutate the state of the connection 82 // points. Implementations must not mutate the state of the connection
83 // as a result of these callbacks. 83 // as a result of these callbacks.
84 class NET_EXPORT_PRIVATE QuicConnectionDebugVisitorInterface { 84 class NET_EXPORT_PRIVATE QuicConnectionDebugVisitorInterface
85 : public QuicPacketGenerator::DebugDelegateInterface {
85 public: 86 public:
86 virtual ~QuicConnectionDebugVisitorInterface() {} 87 virtual ~QuicConnectionDebugVisitorInterface() {}
87 88
89 // Called when a packet has been sent.
90 virtual void OnPacketSent(QuicPacketSequenceNumber sequence_number,
91 EncryptionLevel level,
92 const QuicEncryptedPacket& packet,
93 int rv) = 0;
94
88 // Called when a packet has been received, but before it is 95 // Called when a packet has been received, but before it is
89 // validated or parsed. 96 // validated or parsed.
90 virtual void OnPacketReceived(const IPEndPoint& self_address, 97 virtual void OnPacketReceived(const IPEndPoint& self_address,
91 const IPEndPoint& peer_address, 98 const IPEndPoint& peer_address,
92 const QuicEncryptedPacket& packet) = 0; 99 const QuicEncryptedPacket& packet) = 0;
93 100
94 // Called when the protocol version on the received packet doensn't match 101 // Called when the protocol version on the received packet doensn't match
95 // current protocol version of the connection. 102 // current protocol version of the connection.
96 virtual void OnProtocolVersionMismatch(QuicTag version) = 0; 103 virtual void OnProtocolVersionMismatch(QuicTag version) = 0;
97 104
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 virtual QuicAckFrame* CreateAckFrame() OVERRIDE; 305 virtual QuicAckFrame* CreateAckFrame() OVERRIDE;
299 virtual QuicCongestionFeedbackFrame* CreateFeedbackFrame() OVERRIDE; 306 virtual QuicCongestionFeedbackFrame* CreateFeedbackFrame() OVERRIDE;
300 virtual bool OnSerializedPacket(const SerializedPacket& packet) OVERRIDE; 307 virtual bool OnSerializedPacket(const SerializedPacket& packet) OVERRIDE;
301 308
302 // Accessors 309 // Accessors
303 void set_visitor(QuicConnectionVisitorInterface* visitor) { 310 void set_visitor(QuicConnectionVisitorInterface* visitor) {
304 visitor_ = visitor; 311 visitor_ = visitor;
305 } 312 }
306 void set_debug_visitor(QuicConnectionDebugVisitorInterface* debug_visitor) { 313 void set_debug_visitor(QuicConnectionDebugVisitorInterface* debug_visitor) {
307 debug_visitor_ = debug_visitor; 314 debug_visitor_ = debug_visitor;
315 packet_generator_.set_debug_delegate(debug_visitor);
308 } 316 }
309 const IPEndPoint& self_address() const { return self_address_; } 317 const IPEndPoint& self_address() const { return self_address_; }
310 const IPEndPoint& peer_address() const { return peer_address_; } 318 const IPEndPoint& peer_address() const { return peer_address_; }
311 QuicGuid guid() const { return guid_; } 319 QuicGuid guid() const { return guid_; }
312 const QuicClock* clock() const { return clock_; } 320 const QuicClock* clock() const { return clock_; }
313 QuicRandom* random_generator() const { return random_generator_; } 321 QuicRandom* random_generator() const { return random_generator_; }
314 322
315 // Updates the internal state concerning which packets have been acked. 323 // Updates the internal state concerning which packets have been acked.
316 void RecordPacketReceived(const QuicPacketHeader& header); 324 void RecordPacketReceived(const QuicPacketHeader& header);
317 325
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 // deleted and should not be accessed. If |sequence_number| is present in 429 // deleted and should not be accessed. If |sequence_number| is present in
422 // |retransmission_map_| it also sets up retransmission of the given packet 430 // |retransmission_map_| it also sets up retransmission of the given packet
423 // in case of successful write. If |force| is FORCE, then the packet will be 431 // in case of successful write. If |force| is FORCE, then the packet will be
424 // sent immediately and the send scheduler will not be consulted. 432 // sent immediately and the send scheduler will not be consulted.
425 bool WritePacket(EncryptionLevel level, 433 bool WritePacket(EncryptionLevel level,
426 QuicPacketSequenceNumber sequence_number, 434 QuicPacketSequenceNumber sequence_number,
427 QuicPacket* packet, 435 QuicPacket* packet,
428 HasRetransmittableData retransmittable, 436 HasRetransmittableData retransmittable,
429 Force force); 437 Force force);
430 438
439 int WritePacketToWire(QuicPacketSequenceNumber sequence_number,
440 EncryptionLevel level,
441 const QuicEncryptedPacket& packet,
442 int* error);
443
431 // Make sure an ack we got from our peer is sane. 444 // Make sure an ack we got from our peer is sane.
432 bool ValidateAckFrame(const QuicAckFrame& incoming_ack); 445 bool ValidateAckFrame(const QuicAckFrame& incoming_ack);
433 446
434 QuicConnectionHelperInterface* helper() { return helper_.get(); } 447 QuicConnectionHelperInterface* helper() { return helper_.get(); }
435 448
436 protected: 449 protected:
437 QuicFramer framer_; 450 QuicFramer framer_;
438 451
439 private: 452 private:
440 friend class test::QuicConnectionPeer; 453 friend class test::QuicConnectionPeer;
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
676 // Set to true if the udp packet headers have a new self or peer address. 689 // Set to true if the udp packet headers have a new self or peer address.
677 // This is checked later on validating a data or version negotiation packet. 690 // This is checked later on validating a data or version negotiation packet.
678 bool address_migrating_; 691 bool address_migrating_;
679 692
680 DISALLOW_COPY_AND_ASSIGN(QuicConnection); 693 DISALLOW_COPY_AND_ASSIGN(QuicConnection);
681 }; 694 };
682 695
683 } // namespace net 696 } // namespace net
684 697
685 #endif // NET_QUIC_QUIC_CONNECTION_H_ 698 #endif // NET_QUIC_QUIC_CONNECTION_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698