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

Unified Diff: net/quic/core/quic_framer.cc

Issue 2963763003: In QUIC, send data is copied to streams rather than frames. Protected by FLAGS_quic_reloadable_flag… (Closed)
Patch Set: Rebase Created 3 years, 6 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
« no previous file with comments | « net/quic/core/quic_framer.h ('k') | net/quic/core/quic_headers_stream_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/core/quic_framer.cc
diff --git a/net/quic/core/quic_framer.cc b/net/quic/core/quic_framer.cc
index 84337191eb72a27daa26fa9f736fcf503d7d8b67..25eb17ce2f018da4c1e106cd134b340f6cb1baa1 100644
--- a/net/quic/core/quic_framer.cc
+++ b/net/quic/core/quic_framer.cc
@@ -18,6 +18,7 @@
#include "net/quic/core/quic_data_reader.h"
#include "net/quic/core/quic_data_writer.h"
#include "net/quic/core/quic_socket_address_coder.h"
+#include "net/quic/core/quic_stream_frame_data_producer.h"
#include "net/quic/core/quic_utils.h"
#include "net/quic/platform/api/quic_aligned.h"
#include "net/quic/platform/api/quic_bug_tracker.h"
@@ -312,7 +313,8 @@ QuicFramer::AckFrameInfo::~AckFrameInfo() {}
size_t QuicFramer::BuildDataPacket(const QuicPacketHeader& header,
const QuicFrames& frames,
char* buffer,
- size_t packet_length) {
+ size_t packet_length,
+ QuicStreamFrameDataProducer* data_producer) {
QuicDataWriter writer(packet_length, buffer, perspective_, endianness());
if (!AppendPacketHeader(header, &writer)) {
QUIC_BUG << "AppendPacketHeader failed";
@@ -338,7 +340,7 @@ size_t QuicFramer::BuildDataPacket(const QuicPacketHeader& header,
break;
case STREAM_FRAME:
if (!AppendStreamFrame(*frame.stream_frame, no_stream_frame_length,
- &writer)) {
+ &writer, data_producer)) {
QUIC_BUG << "AppendStreamFrame failed";
return 0;
}
@@ -1788,7 +1790,8 @@ bool QuicFramer::AppendAckBlock(uint8_t gap,
bool QuicFramer::AppendStreamFrame(const QuicStreamFrame& frame,
bool no_stream_frame_length,
- QuicDataWriter* writer) {
+ QuicDataWriter* writer,
+ QuicStreamFrameDataProducer* data_producer) {
if (!AppendStreamId(GetStreamIdSize(frame.stream_id), frame.stream_id,
writer)) {
QUIC_BUG << "Writing stream id size failed.";
@@ -1807,6 +1810,19 @@ bool QuicFramer::AppendStreamFrame(const QuicStreamFrame& frame,
}
}
+ if (data_producer != nullptr) {
+ DCHECK_EQ(nullptr, frame.data_buffer);
+ if (frame.data_length == 0) {
+ return true;
+ }
+ if (!data_producer->WriteStreamData(frame.stream_id, frame.offset,
+ frame.data_length, writer)) {
+ QUIC_BUG << "Writing frame data failed.";
+ return false;
+ }
+ return true;
+ }
+
if (!writer->WriteBytes(frame.data_buffer, frame.data_length)) {
QUIC_BUG << "Writing frame data failed.";
return false;
« no previous file with comments | « net/quic/core/quic_framer.h ('k') | net/quic/core/quic_headers_stream_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698