summaryrefslogtreecommitdiffstats
path: root/chromeos
diff options
context:
space:
mode:
authorhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-30 11:21:36 +0000
committerhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-30 11:21:36 +0000
commit671e95fd450a7697984038aa951427f926254514 (patch)
treee53edca141f39b31484842954bbccc39032dae62 /chromeos
parent4b01b5fcf45caaf83f1d8e818a2a53e812c09426 (diff)
downloadchromium_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.cc1
-rw-r--r--chromeos/dbus/pipe_reader.cc15
-rw-r--r--chromeos/dbus/pipe_reader.h26
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;