OLD | NEW |
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/core/quic_packet_creator.h" | 5 #include "net/quic/core/quic_packet_creator.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cstdint> | 8 #include <cstdint> |
9 | 9 |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
11 #include "net/quic/core/crypto/crypto_protocol.h" | 11 #include "net/quic/core/crypto/crypto_protocol.h" |
12 #include "net/quic/core/quic_data_writer.h" | 12 #include "net/quic/core/quic_data_writer.h" |
13 #include "net/quic/core/quic_flags.h" | 13 #include "net/quic/core/quic_flags.h" |
14 #include "net/quic/core/quic_utils.h" | 14 #include "net/quic/core/quic_utils.h" |
15 #include "net/quic/platform/api/quic_aligned.h" | 15 #include "net/quic/platform/api/quic_aligned.h" |
16 #include "net/quic/platform/api/quic_bug_tracker.h" | 16 #include "net/quic/platform/api/quic_bug_tracker.h" |
17 #include "net/quic/platform/api/quic_logging.h" | 17 #include "net/quic/platform/api/quic_logging.h" |
| 18 #include "net/quic/platform/api/quic_string_piece.h" |
18 | 19 |
19 using base::StringPiece; | |
20 using std::string; | 20 using std::string; |
21 | 21 |
22 // If true, enforce that QUIC CHLOs fit in one packet. | 22 // If true, enforce that QUIC CHLOs fit in one packet. |
23 bool FLAGS_quic_enforce_single_packet_chlo = true; | 23 bool FLAGS_quic_enforce_single_packet_chlo = true; |
24 | 24 |
25 namespace net { | 25 namespace net { |
26 | 26 |
27 QuicPacketCreator::QuicPacketCreator(QuicConnectionId connection_id, | 27 QuicPacketCreator::QuicPacketCreator(QuicConnectionId connection_id, |
28 QuicFramer* framer, | 28 QuicFramer* framer, |
29 QuicBufferAllocator* buffer_allocator, | 29 QuicBufferAllocator* buffer_allocator, |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 PACKET_6BYTE_PACKET_NUMBER, offset)); | 185 PACKET_6BYTE_PACKET_NUMBER, offset)); |
186 | 186 |
187 QUIC_BUG_IF(!HasRoomForStreamFrame(id, offset)) | 187 QUIC_BUG_IF(!HasRoomForStreamFrame(id, offset)) |
188 << "No room for Stream frame, BytesFree: " << BytesFree() | 188 << "No room for Stream frame, BytesFree: " << BytesFree() |
189 << " MinStreamFrameSize: " | 189 << " MinStreamFrameSize: " |
190 << QuicFramer::GetMinStreamFrameSize(id, offset, true); | 190 << QuicFramer::GetMinStreamFrameSize(id, offset, true); |
191 | 191 |
192 if (iov_offset == iov.total_length) { | 192 if (iov_offset == iov.total_length) { |
193 QUIC_BUG_IF(!fin) << "Creating a stream frame with no data or fin."; | 193 QUIC_BUG_IF(!fin) << "Creating a stream frame with no data or fin."; |
194 // Create a new packet for the fin, if necessary. | 194 // Create a new packet for the fin, if necessary. |
195 *frame = QuicFrame(new QuicStreamFrame(id, true, offset, StringPiece())); | 195 *frame = |
| 196 QuicFrame(new QuicStreamFrame(id, true, offset, QuicStringPiece())); |
196 return; | 197 return; |
197 } | 198 } |
198 | 199 |
199 const size_t data_size = iov.total_length - iov_offset; | 200 const size_t data_size = iov.total_length - iov_offset; |
200 size_t min_frame_size = QuicFramer::GetMinStreamFrameSize( | 201 size_t min_frame_size = QuicFramer::GetMinStreamFrameSize( |
201 id, offset, /* last_frame_in_packet= */ true); | 202 id, offset, /* last_frame_in_packet= */ true); |
202 size_t bytes_consumed = | 203 size_t bytes_consumed = |
203 std::min<size_t>(BytesFree() - min_frame_size, data_size); | 204 std::min<size_t>(BytesFree() - min_frame_size, data_size); |
204 | 205 |
205 bool set_fin = fin && bytes_consumed == data_size; // Last frame. | 206 bool set_fin = fin && bytes_consumed == data_size; // Last frame. |
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
624 AddFrame(QuicFrame(QuicPaddingFrame(packet_.num_padding_bytes)), false); | 625 AddFrame(QuicFrame(QuicPaddingFrame(packet_.num_padding_bytes)), false); |
625 DCHECK(success); | 626 DCHECK(success); |
626 } | 627 } |
627 | 628 |
628 bool QuicPacketCreator::IncludeNonceInPublicHeader() { | 629 bool QuicPacketCreator::IncludeNonceInPublicHeader() { |
629 return have_diversification_nonce_ && | 630 return have_diversification_nonce_ && |
630 packet_.encryption_level == ENCRYPTION_INITIAL; | 631 packet_.encryption_level == ENCRYPTION_INITIAL; |
631 } | 632 } |
632 | 633 |
633 } // namespace net | 634 } // namespace net |
OLD | NEW |