Commit cb5a960b authored by Hajime Hoshi's avatar Hajime Hoshi Committed by Commit Bot

mojo: Use a more appripriate task runner at HandleSignalTracker's SimpleWatch

HandleSignalTracker's SimpleWatcher objects always used the default task
runner. This CL fixes this by passing a more appropriate task runner
obtained from Connector.

Bug: 870606
Change-Id: Ib9028175d224b7768606ac1b2319662bd9700f37
Reviewed-on: https://chromium-review.googlesource.com/c/1328550Reviewed-by: default avatarKen Rockot <rockot@google.com>
Commit-Queue: Hajime Hoshi <hajimehoshi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#607147}
parent 8c88d974
...@@ -401,8 +401,8 @@ void Connector::WaitToReadMore() { ...@@ -401,8 +401,8 @@ void Connector::WaitToReadMore() {
base::Bind(&Connector::OnWatcherHandleReady, base::Unretained(this))); base::Bind(&Connector::OnWatcherHandleReady, base::Unretained(this)));
if (message_pipe_.is_valid()) { if (message_pipe_.is_valid()) {
peer_remoteness_tracker_.emplace(message_pipe_.get(), peer_remoteness_tracker_.emplace(
MOJO_HANDLE_SIGNAL_PEER_REMOTE); message_pipe_.get(), MOJO_HANDLE_SIGNAL_PEER_REMOTE, task_runner_);
} }
if (rv != MOJO_RESULT_OK) { if (rv != MOJO_RESULT_OK) {
......
...@@ -9,14 +9,16 @@ ...@@ -9,14 +9,16 @@
namespace mojo { namespace mojo {
HandleSignalTracker::HandleSignalTracker(Handle handle, HandleSignalTracker::HandleSignalTracker(
MojoHandleSignals signals) Handle handle,
MojoHandleSignals signals,
scoped_refptr<base::SequencedTaskRunner> task_runner)
: high_watcher_(FROM_HERE, : high_watcher_(FROM_HERE,
SimpleWatcher::ArmingPolicy::MANUAL, SimpleWatcher::ArmingPolicy::MANUAL,
base::SequencedTaskRunnerHandle::Get()), task_runner),
low_watcher_(FROM_HERE, low_watcher_(FROM_HERE,
SimpleWatcher::ArmingPolicy::MANUAL, SimpleWatcher::ArmingPolicy::MANUAL,
base::SequencedTaskRunnerHandle::Get()) { std::move(task_runner)) {
MojoResult rv = high_watcher_.Watch( MojoResult rv = high_watcher_.Watch(
handle, signals, MOJO_TRIGGER_CONDITION_SIGNALS_SATISFIED, handle, signals, MOJO_TRIGGER_CONDITION_SIGNALS_SATISFIED,
base::Bind(&HandleSignalTracker::OnNotify, base::Unretained(this))); base::Bind(&HandleSignalTracker::OnNotify, base::Unretained(this)));
......
...@@ -12,6 +12,10 @@ ...@@ -12,6 +12,10 @@
#include "mojo/public/cpp/system/simple_watcher.h" #include "mojo/public/cpp/system/simple_watcher.h"
#include "mojo/public/cpp/system/system_export.h" #include "mojo/public/cpp/system/system_export.h"
namespace base {
class SequencedTaskRunner;
}
namespace mojo { namespace mojo {
// This class helps track the state of specific signal on a handle so that // This class helps track the state of specific signal on a handle so that
...@@ -29,7 +33,10 @@ class MOJO_CPP_SYSTEM_EXPORT HandleSignalTracker { ...@@ -29,7 +33,10 @@ class MOJO_CPP_SYSTEM_EXPORT HandleSignalTracker {
// Constructs a tracker which tracks |signals| on |handle|. |signals| may // Constructs a tracker which tracks |signals| on |handle|. |signals| may
// be any single signal flag or any combination of signal flags. // be any single signal flag or any combination of signal flags.
HandleSignalTracker(Handle handle, MojoHandleSignals signals); HandleSignalTracker(Handle handle,
MojoHandleSignals signals,
scoped_refptr<base::SequencedTaskRunner> task_runner =
base::SequencedTaskRunnerHandle::Get());
~HandleSignalTracker(); ~HandleSignalTracker();
const HandleSignalsState& last_known_state() const { const HandleSignalsState& last_known_state() const {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment