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

Side by Side Diff: net/quic/quic_packet_creator.cc

Issue 11377096: Change from re-transmitting an packet with a retransmit number to sending a new packet with a new s… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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
« no previous file with comments | « net/quic/quic_packet_creator.h ('k') | net/quic/quic_protocol.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "net/quic/quic_packet_creator.h" 5 #include "net/quic/quic_packet_creator.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "net/quic/quic_utils.h" 8 #include "net/quic/quic_utils.h"
9 //#include "util/random/acmrandom.h" 9 //#include "util/random/acmrandom.h"
10 10
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 StringPiece data_frame(data.data() + data.size() - data_to_send, 74 StringPiece data_frame(data.data() + data.size() - data_to_send,
75 frame_len); 75 frame_len);
76 76
77 QuicStreamFrame frame(id, set_fin, offset, data_frame); 77 QuicStreamFrame frame(id, set_fin, offset, data_frame);
78 frames.push_back(QuicFrame(&frame)); 78 frames.push_back(QuicFrame(&frame));
79 FillPacketHeader(current_fec_group, PACKET_FLAGS_NONE, &header); 79 FillPacketHeader(current_fec_group, PACKET_FLAGS_NONE, &header);
80 offset += frame_len; 80 offset += frame_len;
81 data_to_send -= frame_len; 81 data_to_send -= frame_len;
82 82
83 // Produce the data packet (which might fin the stream). 83 // Produce the data packet (which might fin the stream).
84 framer_->ConstructFragementDataPacket(header, frames, &packet); 84 framer_->ConstructFrameDataPacket(header, frames, &packet);
85 DCHECK_GE(options_.max_packet_length, packet->length()); 85 DCHECK_GE(options_.max_packet_length, packet->length());
86 packets->push_back(make_pair(header.packet_sequence_number, packet)); 86 packets->push_back(make_pair(header.packet_sequence_number, packet));
87 frames.clear(); 87 frames.clear();
88 } 88 }
89 } 89 }
90 90
91 // Create a new packet for the fin, if necessary. 91 // Create a new packet for the fin, if necessary.
92 if (fin && (options_.separate_fin_packet || data.size() == 0)) { 92 if (fin && (options_.separate_fin_packet || data.size() == 0)) {
93 FillPacketHeader(current_fec_group, PACKET_FLAGS_NONE, &header); 93 FillPacketHeader(current_fec_group, PACKET_FLAGS_NONE, &header);
94 QuicStreamFrame frame(id, true, offset, ""); 94 QuicStreamFrame frame(id, true, offset, "");
95 frames.push_back(QuicFrame(&frame)); 95 frames.push_back(QuicFrame(&frame));
96 framer_->ConstructFragementDataPacket(header, frames, &packet); 96 framer_->ConstructFrameDataPacket(header, frames, &packet);
97 packets->push_back(make_pair(header.packet_sequence_number, packet)); 97 packets->push_back(make_pair(header.packet_sequence_number, packet));
98 frames.clear(); 98 frames.clear();
99 } 99 }
100 100
101 // Create a new FEC packet, if necessary 101 // Create a new FEC packet, if necessary
102 if (current_fec_group != 0) { 102 if (current_fec_group != 0) {
103 FillPacketHeader(current_fec_group, PACKET_FLAGS_FEC, &header); 103 FillPacketHeader(current_fec_group, PACKET_FLAGS_FEC, &header);
104 fec_data.redundancy = fec_group_->parity(); 104 fec_data.redundancy = fec_group_->parity();
105 QuicPacket* fec_packet; 105 QuicPacket* fec_packet;
106 framer_->ConstructFecPacket(header, fec_data, &fec_packet); 106 framer_->ConstructFecPacket(header, fec_data, &fec_packet);
(...skipping 24 matching lines...) Expand all
131 QuicStreamOffset offset, 131 QuicStreamOffset offset,
132 QuicErrorCode error) { 132 QuicErrorCode error) {
133 QuicPacketHeader header; 133 QuicPacketHeader header;
134 FillPacketHeader(0, PACKET_FLAGS_NONE, &header); 134 FillPacketHeader(0, PACKET_FLAGS_NONE, &header);
135 135
136 QuicRstStreamFrame close_frame(id, offset, error); 136 QuicRstStreamFrame close_frame(id, offset, error);
137 137
138 QuicPacket* packet; 138 QuicPacket* packet;
139 QuicFrames frames; 139 QuicFrames frames;
140 frames.push_back(QuicFrame(&close_frame)); 140 frames.push_back(QuicFrame(&close_frame));
141 framer_->ConstructFragementDataPacket(header, frames, &packet); 141 framer_->ConstructFrameDataPacket(header, frames, &packet);
142 return make_pair(header.packet_sequence_number, packet); 142 return make_pair(header.packet_sequence_number, packet);
143 } 143 }
144 144
145 QuicPacketCreator::PacketPair QuicPacketCreator::CloseConnection( 145 QuicPacketCreator::PacketPair QuicPacketCreator::CloseConnection(
146 QuicConnectionCloseFrame* close_frame) { 146 QuicConnectionCloseFrame* close_frame) {
147 147
148 QuicPacketHeader header; 148 QuicPacketHeader header;
149 FillPacketHeader(0, PACKET_FLAGS_NONE, &header); 149 FillPacketHeader(0, PACKET_FLAGS_NONE, &header);
150 150
151 QuicPacket* packet; 151 QuicPacket* packet;
152 QuicFrames frames; 152 QuicFrames frames;
153 frames.push_back(QuicFrame(close_frame)); 153 frames.push_back(QuicFrame(close_frame));
154 framer_->ConstructFragementDataPacket(header, frames, &packet); 154 framer_->ConstructFrameDataPacket(header, frames, &packet);
155 return make_pair(header.packet_sequence_number, packet); 155 return make_pair(header.packet_sequence_number, packet);
156 } 156 }
157 157
158 QuicPacketCreator::PacketPair QuicPacketCreator::AckPacket( 158 QuicPacketCreator::PacketPair QuicPacketCreator::AckPacket(
159 QuicAckFrame* ack_frame) { 159 QuicAckFrame* ack_frame) {
160 160
161 QuicPacketHeader header; 161 QuicPacketHeader header;
162 FillPacketHeader(0, PACKET_FLAGS_NONE, &header); 162 FillPacketHeader(0, PACKET_FLAGS_NONE, &header);
163 163
164 QuicPacket* packet; 164 QuicPacket* packet;
165 QuicFrames frames; 165 QuicFrames frames;
166 frames.push_back(QuicFrame(ack_frame)); 166 frames.push_back(QuicFrame(ack_frame));
167 framer_->ConstructFragementDataPacket(header, frames, &packet); 167 framer_->ConstructFrameDataPacket(header, frames, &packet);
168 return make_pair(header.packet_sequence_number, packet); 168 return make_pair(header.packet_sequence_number, packet);
169 } 169 }
170 170
171 QuicPacketSequenceNumber QuicPacketCreator::SetNewSequenceNumber(
172 QuicPacket* packet) {
173 ++sequence_number_;
174 framer_->WriteSequenceNumber(sequence_number_, packet);
175 return sequence_number_;
176 }
177
171 void QuicPacketCreator::FillPacketHeader(QuicFecGroupNumber fec_group, 178 void QuicPacketCreator::FillPacketHeader(QuicFecGroupNumber fec_group,
172 QuicPacketFlags flags, 179 QuicPacketFlags flags,
173 QuicPacketHeader* header) { 180 QuicPacketHeader* header) {
174 header->guid = guid_; 181 header->guid = guid_;
175 header->flags = flags; 182 header->flags = flags;
176 header->packet_sequence_number = ++sequence_number_; 183 header->packet_sequence_number = ++sequence_number_;
177 header->fec_group = fec_group; 184 header->fec_group = fec_group;
178 185
179 // Default to zero - the sender should increment this as packets are
180 // retransmitted.
181 header->retransmission_count = 0;
182 header->transmission_time = 0; 186 header->transmission_time = 0;
183 } 187 }
184 188
185 } // namespace net 189 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_packet_creator.h ('k') | net/quic/quic_protocol.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698