Chromium Code Reviews| Index: net/base/chunked_upload_data_stream.cc |
| diff --git a/net/base/chunked_upload_data_stream.cc b/net/base/chunked_upload_data_stream.cc |
| index 2b9c4807c7a25996726c6db3cfc87abbea7d2587..7ddd9418dbc331fe5c9891ee5521773d404df638 100644 |
| --- a/net/base/chunked_upload_data_stream.cc |
| +++ b/net/base/chunked_upload_data_stream.cc |
| @@ -10,17 +10,37 @@ |
| namespace net { |
| +ChunkedUploadDataStream::Writer::~Writer() {} |
| + |
| +bool ChunkedUploadDataStream::Writer::AppendData(const char* data, |
| + int data_len, |
| + bool is_done) { |
| + if (!upload_data_stream_) |
|
mef
2016/03/03 16:49:32
Could this be racy if upload_data_stream_ is delet
mmenke
2016/03/03 17:04:45
Neither of these classes is threadsafe - this is a
mef
2016/03/08 17:19:22
Ack, for some reason I thought that these are call
mmenke
2016/03/09 17:27:15
The URLFetcherCore runs on two threads, but all it
|
| + return false; |
| + upload_data_stream_->AppendData(data, data_len, is_done); |
| + return true; |
| +} |
| + |
| +ChunkedUploadDataStream::Writer::Writer( |
| + base::WeakPtr<ChunkedUploadDataStream> upload_data_stream) |
| + : upload_data_stream_(upload_data_stream) {} |
| + |
| ChunkedUploadDataStream::ChunkedUploadDataStream(int64_t identifier) |
| : UploadDataStream(true, identifier), |
| read_index_(0), |
| read_offset_(0), |
| all_data_appended_(false), |
| - read_buffer_len_(0) { |
| -} |
| + read_buffer_len_(0), |
| + weak_factory_(this) {} |
| ChunkedUploadDataStream::~ChunkedUploadDataStream() { |
| } |
| +scoped_ptr<ChunkedUploadDataStream::Writer> |
| +ChunkedUploadDataStream::CreateWriter() { |
| + return make_scoped_ptr(new Writer(weak_factory_.GetWeakPtr())); |
| +} |
| + |
| void ChunkedUploadDataStream::AppendData( |
| const char* data, int data_len, bool is_done) { |
| DCHECK(!all_data_appended_); |