0

relnote: Refactor stream buffer allocation out into a unique_ptr with a custom deleter. No functional change.

This is intended to support free listing the stream buffer allocations.

Re-merge internal change: 103088826
BUG=

Review URL: https://codereview.chromium.org/1493483002

Cr-Commit-Position: refs/heads/master@{#363706}
This commit is contained in:
zhongyi
2015-12-07 18:13:02 -08:00
committed by Commit bot
parent cd9847afca
commit 2f5f40c57c
3 changed files with 14 additions and 4 deletions

@ -323,8 +323,8 @@ size_t QuicPacketCreator::CreateStreamFrame(QuicStreamId id,
CopyToBuffer(iov, iov_offset, bytes_consumed, buffer.get());
// TODO(zhongyi): figure out the lifetime of data. Crashes on windows only.
StringPiece data(buffer.get(), bytes_consumed);
*frame =
QuicFrame(new QuicStreamFrame(id, set_fin, offset, data, buffer.Pass()));
*frame = QuicFrame(
new QuicStreamFrame(id, set_fin, offset, data, std::move(buffer)));
return bytes_consumed;
}

@ -99,6 +99,10 @@ QuicPublicResetPacket::QuicPublicResetPacket(
const QuicPacketPublicHeader& header)
: public_header(header), nonce_proof(0), rejected_packet_number(0) {}
void StreamBufferDeleter::operator()(char* buf) const {
delete[] buf;
}
UniqueStreamBuffer NewStreamBuffer(size_t size) {
return UniqueStreamBuffer(new char[size]);
}
@ -122,7 +126,7 @@ QuicStreamFrame::QuicStreamFrame(QuicStreamId stream_id,
fin(fin),
offset(offset),
data(data),
buffer(buffer.release()) {}
buffer(std::move(buffer)) {}
QuicStreamFrame::~QuicStreamFrame() {}

@ -708,7 +708,13 @@ struct NET_EXPORT_PRIVATE QuicPingFrame {};
// frame.
struct NET_EXPORT_PRIVATE QuicMtuDiscoveryFrame {};
typedef scoped_ptr<char[]> UniqueStreamBuffer;
// Deleter for stream buffers.
class NET_EXPORT_PRIVATE StreamBufferDeleter {
public:
void operator()(char* buf) const;
};
using UniqueStreamBuffer = std::unique_ptr<char[], StreamBufferDeleter>;
// Allocates memory of size |size| for a QUIC stream buffer.
UniqueStreamBuffer NewStreamBuffer(size_t size);