Index: net/quic/quic_connection_logger.cc |
diff --git a/net/quic/quic_connection_logger.cc b/net/quic/quic_connection_logger.cc |
index 5b335443a86c92642cee6508379c7a36464e98bd..7e612030b4ff34e2acd0f5b73be5a3ab1f9cdcb0 100644 |
--- a/net/quic/quic_connection_logger.cc |
+++ b/net/quic/quic_connection_logger.cc |
@@ -25,6 +25,22 @@ Value* NetLogQuicPacketCallback(const IPEndPoint* self_address, |
return dict; |
} |
+Value* NetLogQuicPacketSentCallback(QuicPacketSequenceNumber sequence_number, |
+ EncryptionLevel level, |
+ size_t packet_size, |
+ int rv, |
+ NetLog::LogLevel /* log_level */) { |
+ DictionaryValue* dict = new DictionaryValue(); |
eroman
2013/06/20 22:20:04
Drop the "t". It is cleaner.
Nah, just kidding :)
Ryan Hamilton
2013/06/20 22:44:16
:>
|
+ dict->SetInteger("encryption_level", level); |
+ dict->SetString("packet_sequence_number", |
+ base::Uint64ToString(sequence_number)); |
+ dict->SetInteger("size", packet_size); |
+ if (rv < 0) { |
+ dict->SetInteger("net_error", rv); |
+ } |
+ return dict; |
+} |
+ |
Value* NetLogQuicPacketHeaderCallback(const QuicPacketHeader* header, |
NetLog::LogLevel /* log_level */) { |
DictionaryValue* dict = new DictionaryValue(); |
@@ -136,7 +152,56 @@ QuicConnectionLogger::QuicConnectionLogger(const BoundNetLog& net_log) |
QuicConnectionLogger::~QuicConnectionLogger() { |
} |
- // QuicConnectionDebugVisitorInterface |
+void QuicConnectionLogger::OnFrameAddedToPacket(const QuicFrame& frame) { |
+ switch (frame.type) { |
+ case PADDING_FRAME: |
+ break; |
+ case STREAM_FRAME: |
+ net_log_.AddEvent( |
+ NetLog::TYPE_QUIC_SESSION_STREAM_FRAME_SENT, |
+ base::Bind(&NetLogQuicStreamFrameCallback, frame.stream_frame)); |
+ break; |
+ case ACK_FRAME: |
+ net_log_.AddEvent( |
+ NetLog::TYPE_QUIC_SESSION_ACK_FRAME_SENT, |
+ base::Bind(&NetLogQuicAckFrameCallback, frame.ack_frame)); |
+ break; |
+ case CONGESTION_FEEDBACK_FRAME: |
+ net_log_.AddEvent( |
+ NetLog::TYPE_QUIC_SESSION_CONGESTION_FEEDBACK_FRAME_SENT, |
+ base::Bind(&NetLogQuicCongestionFeedbackFrameCallback, |
+ frame.congestion_feedback_frame)); |
+ break; |
+ case RST_STREAM_FRAME: |
+ net_log_.AddEvent( |
+ NetLog::TYPE_QUIC_SESSION_RST_STREAM_FRAME_SENT, |
+ base::Bind(&NetLogQuicRstStreamFrameCallback, |
+ frame.rst_stream_frame)); |
+ break; |
+ case CONNECTION_CLOSE_FRAME: |
+ net_log_.AddEvent( |
+ NetLog::TYPE_QUIC_SESSION_CONNECTION_CLOSE_FRAME_SENT, |
+ base::Bind(&NetLogQuicConnectionCloseFrameCallback, |
+ frame.connection_close_frame)); |
+ break; |
+ case GOAWAY_FRAME: |
+ break; |
+ default: |
+ DCHECK(false) << "Illegal frame type: " << frame.type; |
+ } |
+} |
+ |
+void QuicConnectionLogger::OnPacketSent( |
+ QuicPacketSequenceNumber sequence_number, |
+ EncryptionLevel level, |
+ const QuicEncryptedPacket& packet, |
+ int rv) { |
+ net_log_.AddEvent( |
+ NetLog::TYPE_QUIC_SESSION_PACKET_SENT, |
+ base::Bind(&NetLogQuicPacketSentCallback, sequence_number, level, |
+ packet.length(), rv)); |
+} |
+ |
void QuicConnectionLogger::OnPacketReceived(const IPEndPoint& self_address, |
const IPEndPoint& peer_address, |
const QuicEncryptedPacket& packet) { |