gfe-relnote: Remove the dependency from QuicMemSliceSpan to QuicStreamSendBuffer and QuicMessageFrame. Refactor only, not protected.
Currently, the (conceptually low level) QuicMemSliceSpan depends on (conceptually high level) QuicStreamSendBuffer and QuicMessageFrame classes, via QuicMemSliceSpan::SaveMemSlicesInSendBuffer and QuicMemSliceSpan::SaveMemSlicesAsMessageData. This change replace those functions by a new QuicMemSliceSpan::ConsumeAll method, which takes a callback instead of directly referring to QuicStreamSendBuffer and QuicMessageFrame.
PiperOrigin-RevId: 240908280
Change-Id: I83c87037586252c1335f3f1e198e6b62915e5698
diff --git a/quic/platform/api/quic_mem_slice_span.h b/quic/platform/api/quic_mem_slice_span.h
index 781382e..4fdf059 100644
--- a/quic/platform/api/quic_mem_slice_span.h
+++ b/quic/platform/api/quic_mem_slice_span.h
@@ -29,16 +29,9 @@
~QuicMemSliceSpan() = default;
- // Save data buffers to |send_buffer| and returns the amount of saved data.
- // |send_buffer| will hold a reference to all data buffer.
- QuicByteCount SaveMemSlicesInSendBuffer(QuicStreamSendBuffer* send_buffer) {
- return impl_.SaveMemSlicesInSendBuffer(send_buffer);
- }
-
- // Save data buffers as message data in |message_frame|. |message_frame| will
- // hold a reference to all data buffers.
- void SaveMemSlicesAsMessageData(QuicMessageFrame* message_frame) {
- impl_.SaveMemSlicesAsMessageData(message_frame);
+ template <typename ConsumeFunction>
+ QuicByteCount ConsumeAll(ConsumeFunction consume) {
+ return impl_.ConsumeAll(consume);
}
// Return data of the span at |index| by the form of a QuicStringPiece.
diff --git a/quic/platform/api/quic_mem_slice_span_test.cc b/quic/platform/api/quic_mem_slice_span_test.cc
index b4c5e51..067a7a4 100644
--- a/quic/platform/api/quic_mem_slice_span_test.cc
+++ b/quic/platform/api/quic_mem_slice_span_test.cc
@@ -5,7 +5,7 @@
#include "net/third_party/quiche/src/quic/platform/api/quic_mem_slice_span.h"
#include "net/third_party/quiche/src/quic/core/quic_simple_buffer_allocator.h"
-#include "net/third_party/quiche/src/quic/core/quic_stream_send_buffer.h"
+#include "net/third_party/quiche/src/quic/core/quic_types.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_test_mem_slice_vector.h"
@@ -26,23 +26,20 @@
std::vector<std::pair<char*, size_t>> buffers_;
};
-TEST_F(QuicMemSliceSpanImplTest, SaveDataInSendBuffer) {
+TEST_F(QuicMemSliceSpanImplTest, ConsumeAll) {
SimpleBufferAllocator allocator;
- QuicStreamSendBuffer send_buffer(&allocator);
QuicTestMemSliceVector vector(buffers_);
- EXPECT_EQ(10 * 1024u, vector.span().SaveMemSlicesInSendBuffer(&send_buffer));
- EXPECT_EQ(10u, send_buffer.size());
-}
+ int num_slices = 0;
+ QuicByteCount bytes_consumed =
+ vector.span().ConsumeAll([&](QuicMemSlice slice) {
+ EXPECT_EQ(data_, slice.data());
+ EXPECT_EQ(1024, slice.length());
+ ++num_slices;
+ });
-TEST_F(QuicMemSliceSpanImplTest, SaveEmptyMemSliceInSendBuffer) {
- SimpleBufferAllocator allocator;
- QuicStreamSendBuffer send_buffer(&allocator);
- buffers_.push_back(std::make_pair(nullptr, 0));
- QuicTestMemSliceVector vector(buffers_);
- EXPECT_EQ(10 * 1024u, vector.span().SaveMemSlicesInSendBuffer(&send_buffer));
- // Verify the empty slice does not get saved.
- EXPECT_EQ(10u, send_buffer.size());
+ EXPECT_EQ(10 * 1024u, bytes_consumed);
+ EXPECT_EQ(10, num_slices);
}
} // namespace