summaryrefslogtreecommitdiff
path: root/chromeos/dbus/pipe_reader.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromeos/dbus/pipe_reader.cc')
-rw-r--r--chromeos/dbus/pipe_reader.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/chromeos/dbus/pipe_reader.cc b/chromeos/dbus/pipe_reader.cc
index 547a974908..1e91d75b4f 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);