Index: net/quic/quic_connection.h |
diff --git a/net/quic/quic_connection.h b/net/quic/quic_connection.h |
index 0f083536d6c84a44e2e922540018df2bd311b7a2..6bbb84fdfdf058f39eac13c77200d32230c05738 100644 |
--- a/net/quic/quic_connection.h |
+++ b/net/quic/quic_connection.h |
@@ -204,6 +204,9 @@ class NET_EXPORT_PRIVATE QuicConnectionDebugVisitor |
// Called when the connection is closed. |
virtual void OnConnectionClosed(QuicErrorCode error, bool from_peer) {} |
+ |
+ // Called when the version negotiation is successful. |
+ virtual void OnSuccessfulVersionNegotiation(const QuicVersion& version) {} |
}; |
class NET_EXPORT_PRIVATE QuicConnectionHelperInterface { |
@@ -228,12 +231,6 @@ class NET_EXPORT_PRIVATE QuicConnection |
public QuicPacketGenerator::DelegateInterface, |
public QuicSentPacketManager::NetworkChangeVisitor { |
public: |
- enum PacketType { |
- NORMAL, |
- QUEUED, |
- CONNECTION_CLOSE |
- }; |
- |
enum AckBundling { |
NO_ACK = 0, |
SEND_ACK = 1, |
@@ -567,27 +564,22 @@ class NET_EXPORT_PRIVATE QuicConnection |
EncryptionLevel level, |
TransmissionType transmission_type); |
- QuicPacketSequenceNumber sequence_number; |
- QuicPacket* packet; |
+ SerializedPacket serialized_packet; |
const EncryptionLevel encryption_level; |
TransmissionType transmission_type; |
- HasRetransmittableData retransmittable; |
- IsHandshake handshake; |
- PacketType type; |
- QuicByteCount length; |
}; |
typedef std::list<QueuedPacket> QueuedPacketList; |
typedef std::map<QuicFecGroupNumber, QuicFecGroup*> FecGroupMap; |
// Writes the given packet to socket, encrypted with packet's |
- // encryption_level. Returns true on successful write. Behavior is undefined |
- // if connection is not established or broken. A return value of true means |
- // the packet was transmitted and may be destroyed. If the packet is |
- // retransmittable, WritePacket sets up retransmission for a successful write. |
- // If packet is FORCE, then it will be sent immediately and the send scheduler |
- // will not be consulted. |
- bool WritePacket(QueuedPacket packet); |
+ // encryption_level. Returns true on successful write, and false if the writer |
+ // was blocked and the write needs to be tried again. Behavior is undefined |
+ // if connection is not established or broken. Notifies the SentPacketManager |
+ // when the write is successful. |
+ // Saves the connection close packet for later transmission, even if the |
+ // writer is write blocked. |
+ bool WritePacket(const QueuedPacket& packet); |
// Make sure an ack we got from our peer is sane. |
bool ValidateAckFrame(const QuicAckFrame& incoming_ack); |
@@ -665,6 +657,9 @@ class NET_EXPORT_PRIVATE QuicConnection |
void CheckForAddressMigration(const IPEndPoint& self_address, |
const IPEndPoint& peer_address); |
+ HasRetransmittableData IsRetransmittable(QueuedPacket packet); |
+ bool IsConnectionClose(QueuedPacket packet); |
+ |
QuicFramer framer_; |
QuicConnectionHelperInterface* helper_; // Not owned. |
QuicPacketWriter* writer_; // Owned or not depending on |owns_writer_|. |
@@ -693,6 +688,7 @@ class NET_EXPORT_PRIVATE QuicConnection |
std::vector<QuicGoAwayFrame> last_goaway_frames_; |
std::vector<QuicWindowUpdateFrame> last_window_update_frames_; |
std::vector<QuicBlockedFrame> last_blocked_frames_; |
+ std::vector<QuicPingFrame> last_ping_frames_; |
std::vector<QuicConnectionCloseFrame> last_close_frames_; |
QuicCongestionFeedbackFrame outgoing_congestion_feedback_; |