Index: net/quic/quic_packet_generator.cc |
diff --git a/net/quic/quic_packet_generator.cc b/net/quic/quic_packet_generator.cc |
index 175f555f9843d247762bf731e711e62768300f5b..952bdc266df9333e60e425f012cd2d2e72a6bcb6 100644 |
--- a/net/quic/quic_packet_generator.cc |
+++ b/net/quic/quic_packet_generator.cc |
@@ -15,12 +15,13 @@ namespace net { |
class QuicAckNotifier; |
-QuicPacketGenerator::QuicPacketGenerator(DelegateInterface* delegate, |
- DebugDelegate* debug_delegate, |
- QuicPacketCreator* creator) |
+QuicPacketGenerator::QuicPacketGenerator(QuicConnectionId connection_id, |
+ QuicFramer* framer, |
+ QuicRandom* random_generator, |
+ DelegateInterface* delegate) |
: delegate_(delegate), |
- debug_delegate_(debug_delegate), |
- packet_creator_(creator), |
+ debug_delegate_(NULL), |
+ packet_creator_(connection_id, framer, random_generator), |
batch_mode_(false), |
should_fec_protect_(false), |
should_send_ack_(false), |
@@ -101,7 +102,7 @@ QuicConsumedData QuicPacketGenerator::ConsumeData(QuicStreamId id, |
size_t total_bytes_consumed = 0; |
bool fin_consumed = false; |
- if (!packet_creator_->HasRoomForStreamFrame(id, offset)) { |
+ if (!packet_creator_.HasRoomForStreamFrame(id, offset)) { |
SerializeAndSendPacket(); |
} |
@@ -117,10 +118,10 @@ QuicConsumedData QuicPacketGenerator::ConsumeData(QuicStreamId id, |
size_t bytes_consumed; |
if (notifier != NULL) { |
// We want to track which packet this stream frame ends up in. |
- bytes_consumed = packet_creator_->CreateStreamFrameWithNotifier( |
+ bytes_consumed = packet_creator_.CreateStreamFrameWithNotifier( |
id, data, offset + total_bytes_consumed, fin, notifier, &frame); |
} else { |
- bytes_consumed = packet_creator_->CreateStreamFrame( |
+ bytes_consumed = packet_creator_.CreateStreamFrame( |
id, data, offset + total_bytes_consumed, fin, &frame); |
} |
if (!AddFrame(frame)) { |
@@ -134,10 +135,10 @@ QuicConsumedData QuicPacketGenerator::ConsumeData(QuicStreamId id, |
total_bytes_consumed += bytes_consumed; |
fin_consumed = fin && total_bytes_consumed == data_size; |
data.Consume(bytes_consumed); |
- DCHECK(data.Empty() || packet_creator_->BytesFree() == 0u); |
+ DCHECK(data.Empty() || packet_creator_.BytesFree() == 0u); |
// TODO(ianswett): Restore packet reordering. |
- if (!InBatchMode() || !packet_creator_->HasRoomForStreamFrame(id, offset)) { |
+ if (!InBatchMode() || !packet_creator_.HasRoomForStreamFrame(id, offset)) { |
SerializeAndSendPacket(); |
} |
@@ -158,7 +159,7 @@ QuicConsumedData QuicPacketGenerator::ConsumeData(QuicStreamId id, |
// blocked. If not in batch mode, force close the group. |
MaybeSendFecPacketAndCloseGroup(!InBatchMode()); |
- DCHECK(InBatchMode() || !packet_creator_->HasPendingFrames()); |
+ DCHECK(InBatchMode() || !packet_creator_.HasPendingFrames()); |
return QuicConsumedData(total_bytes_consumed, fin_consumed); |
} |
@@ -185,7 +186,7 @@ void QuicPacketGenerator::SendQueuedFrames(bool flush) { |
} |
if (!InBatchMode() || flush) { |
- if (packet_creator_->HasPendingFrames()) { |
+ if (packet_creator_.HasPendingFrames()) { |
SerializeAndSendPacket(); |
} |
// Ensure the FEC group is closed at the end of this method unless other |
@@ -195,12 +196,12 @@ void QuicPacketGenerator::SendQueuedFrames(bool flush) { |
} |
void QuicPacketGenerator::MaybeStartFecProtection() { |
- if (!packet_creator_->IsFecEnabled()) { |
+ if (!packet_creator_.IsFecEnabled()) { |
return; |
} |
DVLOG(1) << "Turning FEC protection ON"; |
should_fec_protect_ = true; |
- if (packet_creator_->IsFecProtected()) { |
+ if (packet_creator_.IsFecProtected()) { |
// Only start creator's FEC protection if not already on. |
return; |
} |
@@ -212,21 +213,21 @@ void QuicPacketGenerator::MaybeStartFecProtection() { |
// frame to be added to the packet. |
SendQueuedFrames(true); |
} |
- packet_creator_->StartFecProtectingPackets(); |
- DCHECK(packet_creator_->IsFecProtected()); |
+ packet_creator_.StartFecProtectingPackets(); |
+ DCHECK(packet_creator_.IsFecProtected()); |
} |
void QuicPacketGenerator::MaybeSendFecPacketAndCloseGroup(bool force) { |
- if (!packet_creator_->IsFecProtected() || |
- packet_creator_->HasPendingFrames()) { |
+ if (!packet_creator_.IsFecProtected() || |
+ packet_creator_.HasPendingFrames()) { |
return; |
} |
- if (packet_creator_->ShouldSendFec(force)) { |
+ if (packet_creator_.ShouldSendFec(force)) { |
// TODO(jri): SerializeFec can return a NULL packet, and this should |
// cause an early return, with a call to |
// delegate_->OnPacketGenerationError. |
- SerializedPacket serialized_fec = packet_creator_->SerializeFec(); |
+ SerializedPacket serialized_fec = packet_creator_.SerializeFec(); |
DCHECK(serialized_fec.packet); |
delegate_->OnSerializedPacket(serialized_fec); |
} |
@@ -234,9 +235,9 @@ void QuicPacketGenerator::MaybeSendFecPacketAndCloseGroup(bool force) { |
// Turn FEC protection off if the creator does not have an FEC group open. |
// Note: We only wait until the frames queued in the creator are flushed; |
// pending frames in the generator will not keep us from turning FEC off. |
- if (!should_fec_protect_ && !packet_creator_->IsFecGroupOpen()) { |
- packet_creator_->StopFecProtectingPackets(); |
- DCHECK(!packet_creator_->IsFecProtected()); |
+ if (!should_fec_protect_ && !packet_creator_.IsFecGroupOpen()) { |
+ packet_creator_.StopFecProtectingPackets(); |
+ DCHECK(!packet_creator_.IsFecProtected()); |
} |
} |
@@ -258,7 +259,7 @@ void QuicPacketGenerator::FlushAllQueuedFrames() { |
} |
bool QuicPacketGenerator::HasQueuedFrames() const { |
- return packet_creator_->HasPendingFrames() || HasPendingFrames(); |
+ return packet_creator_.HasPendingFrames() || HasPendingFrames(); |
} |
bool QuicPacketGenerator::HasPendingFrames() const { |
@@ -306,7 +307,7 @@ bool QuicPacketGenerator::AddNextPendingFrame() { |
} |
bool QuicPacketGenerator::AddFrame(const QuicFrame& frame) { |
- bool success = packet_creator_->AddSavedFrame(frame); |
+ bool success = packet_creator_.AddSavedFrame(frame); |
if (success && debug_delegate_) { |
debug_delegate_->OnFrameAddedToPacket(frame); |
} |
@@ -314,10 +315,48 @@ bool QuicPacketGenerator::AddFrame(const QuicFrame& frame) { |
} |
void QuicPacketGenerator::SerializeAndSendPacket() { |
- SerializedPacket serialized_packet = packet_creator_->SerializePacket(); |
+ SerializedPacket serialized_packet = packet_creator_.SerializePacket(); |
DCHECK(serialized_packet.packet); |
delegate_->OnSerializedPacket(serialized_packet); |
MaybeSendFecPacketAndCloseGroup(false); |
} |
+void QuicPacketGenerator::StopSendingVersion() { |
+ packet_creator_.StopSendingVersion(); |
+} |
+ |
+QuicPacketSequenceNumber QuicPacketGenerator::sequence_number() const { |
+ return packet_creator_.sequence_number(); |
+} |
+ |
+size_t QuicPacketGenerator::max_packet_length() const { |
+ return packet_creator_.max_packet_length(); |
+} |
+ |
+void QuicPacketGenerator::set_max_packet_length(size_t length) { |
+ packet_creator_.set_max_packet_length(length); |
+} |
+ |
+QuicEncryptedPacket* QuicPacketGenerator::SerializeVersionNegotiationPacket( |
+ const QuicVersionVector& supported_versions) { |
+ return packet_creator_.SerializeVersionNegotiationPacket(supported_versions); |
+} |
+ |
+SerializedPacket QuicPacketGenerator::ReserializeAllFrames( |
+ const QuicFrames& frames, |
+ QuicSequenceNumberLength original_length) { |
+ return packet_creator_.ReserializeAllFrames(frames, original_length); |
+} |
+ |
+void QuicPacketGenerator::UpdateSequenceNumberLength( |
+ QuicPacketSequenceNumber least_packet_awaited_by_peer, |
+ QuicByteCount congestion_window) { |
+ return packet_creator_.UpdateSequenceNumberLength( |
+ least_packet_awaited_by_peer, congestion_window); |
+} |
+ |
+void QuicPacketGenerator::set_encryption_level(EncryptionLevel level) { |
+ packet_creator_.set_encryption_level(level); |
+} |
+ |
} // namespace net |