diff options
author | hashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-30 11:21:36 +0000 |
---|---|---|
committer | hashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-30 11:21:36 +0000 |
commit | 671e95fd450a7697984038aa951427f926254514 (patch) | |
tree | e53edca141f39b31484842954bbccc39032dae62 /chromeos | |
parent | 4b01b5fcf45caaf83f1d8e818a2a53e812c09426 (diff) | |
download | chromium_src-671e95fd450a7697984038aa951427f926254514.zip chromium_src-671e95fd450a7697984038aa951427f926254514.tar.gz chromium_src-671e95fd450a7697984038aa951427f926254514.tar.bz2 |
net: Always pass TaskRunner to FileStream's ctor
BUG=275751
TEST=git cl try
Review URL: https://codereview.chromium.org/247873003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267179 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos')
-rw-r--r-- | chromeos/dbus/debug_daemon_client.cc | 1 | ||||
-rw-r--r-- | chromeos/dbus/pipe_reader.cc | 15 | ||||
-rw-r--r-- | chromeos/dbus/pipe_reader.h | 26 |
3 files changed, 33 insertions, 9 deletions
diff --git a/chromeos/dbus/debug_daemon_client.cc b/chromeos/dbus/debug_daemon_client.cc index 73d86ae..2c81c17 100644 --- a/chromeos/dbus/debug_daemon_client.cc +++ b/chromeos/dbus/debug_daemon_client.cc @@ -222,6 +222,7 @@ class DebugDaemonClientImpl : public DebugDaemonClient { } pipe_reader_.reset(new PipeReaderForString( + base::WorkerPool::GetTaskRunner(true /* task_is_slow */), base::Bind(&DebugDaemonClientImpl::OnIOComplete, weak_ptr_factory_.GetWeakPtr()))); int write_fd = -1; diff --git a/chromeos/dbus/pipe_reader.cc b/chromeos/dbus/pipe_reader.cc index 547a974..1e91d75 100644 --- a/chromeos/dbus/pipe_reader.cc +++ b/chromeos/dbus/pipe_reader.cc @@ -7,13 +7,18 @@ #include "base/bind.h" #include "base/platform_file.h" #include "base/posix/eintr_wrapper.h" +#include "base/task_runner.h" +#include "net/base/file_stream.h" +#include "net/base/io_buffer.h" #include "net/base/net_errors.h" namespace chromeos { -PipeReader::PipeReader(PipeReader::IOCompleteCallback callback) +PipeReader::PipeReader(const scoped_refptr<base::TaskRunner>& task_runner, + const IOCompleteCallback& callback) : write_fd_(-1), io_buffer_(new net::IOBufferWithSize(4096)), + task_runner_(task_runner), callback_(callback), weak_ptr_factory_(this) {} @@ -42,7 +47,8 @@ bool PipeReader::StartIO() { // Pass ownership of pipe_fds[0] to data_stream_, which will will close it. data_stream_.reset(new net::FileStream( data_file_, - base::PLATFORM_FILE_READ | base::PLATFORM_FILE_ASYNC)); + base::PLATFORM_FILE_READ | base::PLATFORM_FILE_ASYNC, + task_runner_)); // Post an initial async read to setup data collection int rv = data_stream_->Read( @@ -75,7 +81,10 @@ void PipeReader::OnDataReady(int byte_count) { } PipeReaderForString::PipeReaderForString( - PipeReader::IOCompleteCallback callback) : PipeReader(callback) {} + const scoped_refptr<base::TaskRunner>& task_runner, + const IOCompleteCallback& callback) + : PipeReader(task_runner, callback) { +} void PipeReaderForString::AcceptData(const char *data, int byte_count) { data_.append(data, byte_count); diff --git a/chromeos/dbus/pipe_reader.h b/chromeos/dbus/pipe_reader.h index bae1723..59d291b 100644 --- a/chromeos/dbus/pipe_reader.h +++ b/chromeos/dbus/pipe_reader.h @@ -5,10 +5,21 @@ #ifndef CHROMEOS_DBUS_PIPE_READER_H_ #define CHROMEOS_DBUS_PIPE_READER_H_ +#include <string> + #include "base/callback.h" -#include "base/memory/ref_counted_memory.h" -#include "net/base/file_stream.h" -#include "net/base/io_buffer.h" +#include "base/memory/ref_counted.h" +#include "base/memory/scoped_ptr.h" +#include "base/memory/weak_ptr.h" + +namespace base { +class TaskRunner; +} + +namespace net { +class FileStream; +class IOBufferWithSize; +} namespace chromeos { @@ -26,9 +37,10 @@ namespace chromeos { // |callback|. class PipeReader { public: - typedef base::Callback<void(void)>IOCompleteCallback; + typedef base::Callback<void(void)> IOCompleteCallback; - explicit PipeReader(PipeReader::IOCompleteCallback callback); + PipeReader(const scoped_refptr<base::TaskRunner>& task_runner, + const IOCompleteCallback& callback); virtual ~PipeReader(); // Closes writeable descriptor; normally used in parent process after fork. @@ -55,6 +67,7 @@ class PipeReader { int write_fd_; scoped_ptr<net::FileStream> data_stream_; scoped_refptr<net::IOBufferWithSize> io_buffer_; + scoped_refptr<base::TaskRunner> task_runner_; IOCompleteCallback callback_; // Note: This should remain the last member so it'll be destroyed and @@ -67,7 +80,8 @@ class PipeReader { // PipeReader subclass which accepts incoming data to a string. class PipeReaderForString : public PipeReader { public: - explicit PipeReaderForString(PipeReader::IOCompleteCallback callback); + PipeReaderForString(const scoped_refptr<base::TaskRunner>& task_runner, + const IOCompleteCallback& callback); virtual void AcceptData(const char *data, int length) OVERRIDE; |