diff options
author | hashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-20 09:24:33 +0000 |
---|---|---|
committer | hashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-20 09:24:33 +0000 |
commit | 09c08283f3bb20f4441d518f6ba84fe937c19fa9 (patch) | |
tree | e69bed2fa34af8830f926f04a787000b2eedf682 /net/url_request | |
parent | 2bdb36465f7fde5c0cfc146aa1910a874facd63c (diff) | |
download | chromium_src-09c08283f3bb20f4441d518f6ba84fe937c19fa9.zip chromium_src-09c08283f3bb20f4441d518f6ba84fe937c19fa9.tar.gz chromium_src-09c08283f3bb20f4441d518f6ba84fe937c19fa9.tar.bz2 |
net: Use DrainableIOBuffer in URLFetcherFileWriter
With DrainableIOBuffer, there is no need to maintain |pending_bytes_| and |buffer_offset_| manually.
BUG=126753
TEST=net_unittests
Review URL: https://chromiumcodereview.appspot.com/12297023
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@183440 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/url_request')
-rw-r--r-- | net/url_request/url_fetcher_file_writer.cc | 17 | ||||
-rw-r--r-- | net/url_request/url_fetcher_file_writer.h | 12 |
2 files changed, 8 insertions, 21 deletions
diff --git a/net/url_request/url_fetcher_file_writer.cc b/net/url_request/url_fetcher_file_writer.cc index bd70b57..07da472 100644 --- a/net/url_request/url_fetcher_file_writer.cc +++ b/net/url_request/url_fetcher_file_writer.cc @@ -49,16 +49,12 @@ void URLFetcherFileWriter::CreateTempFile(const CompletionCallback& callback) { void URLFetcherFileWriter::Write(scoped_refptr<IOBuffer> buffer, int num_bytes, const CompletionCallback& callback) { - // Start writing to the file by setting the initial state - // of |pending_bytes_| and |buffer_offset_| to indicate that the - // entire buffer has not yet been written. - pending_bytes_ = num_bytes; - buffer_offset_ = 0; - ContinueWrite(buffer, callback, base::PLATFORM_FILE_OK, 0); + ContinueWrite(new DrainableIOBuffer(buffer, num_bytes), callback, + base::PLATFORM_FILE_OK, 0); } void URLFetcherFileWriter::ContinueWrite( - scoped_refptr<IOBuffer> buffer, + scoped_refptr<DrainableIOBuffer> buffer, const CompletionCallback& callback, base::PlatformFileError error_code, int bytes_written) { @@ -78,14 +74,13 @@ void URLFetcherFileWriter::ContinueWrite( } total_bytes_written_ += bytes_written; - buffer_offset_ += bytes_written; - pending_bytes_ -= bytes_written; + buffer->DidConsume(bytes_written); - if (pending_bytes_ > 0) { + if (buffer->BytesRemaining() > 0) { base::FileUtilProxy::Write( file_task_runner_, file_handle_, total_bytes_written_, // Append to the end - (buffer->data() + buffer_offset_), pending_bytes_, + buffer->data(), buffer->BytesRemaining(), base::Bind(&URLFetcherFileWriter::ContinueWrite, weak_factory_.GetWeakPtr(), buffer, diff --git a/net/url_request/url_fetcher_file_writer.h b/net/url_request/url_fetcher_file_writer.h index 6a14409..3596f2b 100644 --- a/net/url_request/url_fetcher_file_writer.h +++ b/net/url_request/url_fetcher_file_writer.h @@ -18,6 +18,7 @@ class TaskRunner; namespace net { +class DrainableIOBuffer; class IOBuffer; // This class encapsulates all state involved in writing URLFetcher response @@ -38,7 +39,7 @@ class URLFetcherFileWriter { // Called when a write has been done. Continues writing if there are more // bytes to write. Otherwise, runs |callback|. - void ContinueWrite(scoped_refptr<IOBuffer> buffer, + void ContinueWrite(scoped_refptr<DrainableIOBuffer> buffer, const CompletionCallback& callback, base::PlatformFileError error_code, int bytes_written); @@ -103,15 +104,6 @@ class URLFetcherFileWriter { // written, so that writes know the offset to give. int64 total_bytes_written_; - // How many bytes did the last Write() try to write? Needed so - // that if not all the bytes get written on a Write(), we can - // call Write() again with the rest. - int pending_bytes_; - - // When writing, how many bytes from the buffer have been successfully - // written so far? - int buffer_offset_; - DISALLOW_COPY_AND_ASSIGN(URLFetcherFileWriter); }; |