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

Unified Diff: net/quic/quic_packet_generator.h

Issue 862133002: Update from https://crrev.com/312398 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: net/quic/quic_packet_generator.h
diff --git a/net/quic/quic_packet_generator.h b/net/quic/quic_packet_generator.h
index 24dc97c4772264efa74f4423ea74902807fa9cbd..a86a74611b77b2746d67cbe37b5a7b88c87b84d5 100644
--- a/net/quic/quic_packet_generator.h
+++ b/net/quic/quic_packet_generator.h
@@ -74,7 +74,6 @@ class NET_EXPORT_PRIVATE QuicPacketGenerator {
HasRetransmittableData retransmittable,
IsHandshake handshake) = 0;
virtual QuicAckFrame* CreateAckFrame() = 0;
- virtual QuicCongestionFeedbackFrame* CreateFeedbackFrame() = 0;
virtual QuicStopWaitingFrame* CreateStopWaitingFrame() = 0;
// Takes ownership of |packet.packet| and |packet.retransmittable_frames|.
virtual void OnSerializedPacket(const SerializedPacket& packet) = 0;
@@ -105,14 +104,12 @@ class NET_EXPORT_PRIVATE QuicPacketGenerator {
// Called by the connection when the RTT may have changed.
void OnRttChange(QuicTime::Delta rtt);
- // Indicates that an ACK frame should be sent. If |also_send_feedback| is
- // true, then it also indicates a CONGESTION_FEEDBACK frame should be sent.
+ // Indicates that an ACK frame should be sent.
// If |also_send_stop_waiting| is true, then it also indicates that a
// STOP_WAITING frame should be sent as well.
- // The contents of the frame(s) will be generated via a call to the delegates
- // CreateAckFrame() and CreateFeedbackFrame() when the packet is serialized.
- void SetShouldSendAck(bool also_send_feedback,
- bool also_send_stop_waiting);
+ // The contents of the frame(s) will be generated via a call to the delegate
+ // CreateAckFrame() when the packet is serialized.
+ void SetShouldSendAck(bool also_send_stop_waiting);
// Indicates that a STOP_WAITING frame should be sent.
void SetShouldSendStopWaiting();
@@ -171,6 +168,16 @@ class NET_EXPORT_PRIVATE QuicPacketGenerator {
// Set the minimum number of bytes for the connection id length;
void SetConnectionIdLength(uint32 length);
+ // Called when the FEC alarm fires.
+ void OnFecTimeout();
+
+ // Called after sending |sequence_number| to determine whether an FEC alarm
+ // should be set for sending out an FEC packet. Returns a positive and finite
+ // timeout if an FEC alarm should be set, and infinite if no alarm should be
+ // set. OnFecTimeout should be called to send the FEC packet when the alarm
+ // fires.
+ QuicTime::Delta GetFecTimeout(QuicPacketSequenceNumber sequence_number);
+
// Sets the encryption level that will be applied to new packets.
void set_encryption_level(EncryptionLevel level);
@@ -186,8 +193,6 @@ class NET_EXPORT_PRIVATE QuicPacketGenerator {
debug_delegate_ = debug_delegate;
}
- QuicTime::Delta fec_timeout() { return fec_timeout_; }
-
private:
friend class test::QuicPacketGeneratorPeer;
@@ -205,15 +210,18 @@ class NET_EXPORT_PRIVATE QuicPacketGenerator {
// off FEC protection in the creator if it's off in the generator.
void MaybeSendFecPacketAndCloseGroup(bool force);
+ // Returns true if an FEC packet should be generated based on |force| and
+ // current state of the generator and the creator.
+ bool ShouldSendFecPacket(bool force);
+
void SendQueuedFrames(bool flush);
- // Test to see if we have pending ack, feedback, or control frames.
+ // Test to see if we have pending ack, or control frames.
bool HasPendingFrames() const;
// Test to see if the addition of a pending frame (which might be
// retransmittable) would still allow the resulting packet to be sent now.
bool CanSendWithNextPendingFrameAddition() const;
- // Add exactly one pending frame, preferring ack over feedback over control
- // frames.
+ // Add exactly one pending frame, preferring ack frames over control frames.
bool AddNextPendingFrame();
bool AddFrame(const QuicFrame& frame);
@@ -229,7 +237,8 @@ class NET_EXPORT_PRIVATE QuicPacketGenerator {
// True if batch mode is currently enabled.
bool batch_mode_;
- // Timeout used for FEC alarm. Can be set to zero.
+ // Timeout used for FEC alarm. Can be set to zero initially or if the SRTT has
+ // not yet been set.
QuicTime::Delta fec_timeout_;
// True if FEC protection is on. The creator may have an open FEC group even
@@ -238,14 +247,12 @@ class NET_EXPORT_PRIVATE QuicPacketGenerator {
// Flags to indicate the need for just-in-time construction of a frame.
bool should_send_ack_;
- bool should_send_feedback_;
bool should_send_stop_waiting_;
- // If we put a non-retransmittable frame (namley ack or feedback frame) in
- // this packet, then we have to hold a reference to it until we flush (and
- // serialize it). Retransmittable frames are referenced elsewhere so that they
+ // If we put a non-retransmittable frame (ack frame) in this packet, then we
+ // have to hold a reference to it until we flush (and serialize it).
+ // Retransmittable frames are referenced elsewhere so that they
// can later be (optionally) retransmitted.
scoped_ptr<QuicAckFrame> pending_ack_frame_;
- scoped_ptr<QuicCongestionFeedbackFrame> pending_feedback_frame_;
scoped_ptr<QuicStopWaitingFrame> pending_stop_waiting_frame_;
// Stores notifiers that should be attached to the next serialized packet.

Powered by Google App Engine
This is Rietveld 408576698