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() {
base::Bind(&Connector::OnWatcherHandleReady, base::Unretained(this)));
if (message_pipe_.is_valid()) {
peer_remoteness_tracker_.emplace(message_pipe_.get(),
MOJO_HANDLE_SIGNAL_PEER_REMOTE);
peer_remoteness_tracker_.emplace(
message_pipe_.get(), MOJO_HANDLE_SIGNAL_PEER_REMOTE, task_runner_);
}
if (rv != MOJO_RESULT_OK) {
......
......@@ -9,14 +9,16 @@
namespace mojo {
HandleSignalTracker::HandleSignalTracker(Handle handle,
MojoHandleSignals signals)
HandleSignalTracker::HandleSignalTracker(
Handle handle,
MojoHandleSignals signals,
scoped_refptr<base::SequencedTaskRunner> task_runner)
: high_watcher_(FROM_HERE,
SimpleWatcher::ArmingPolicy::MANUAL,
base::SequencedTaskRunnerHandle::Get()),
task_runner),
low_watcher_(FROM_HERE,
SimpleWatcher::ArmingPolicy::MANUAL,
base::SequencedTaskRunnerHandle::Get()) {
std::move(task_runner)) {
MojoResult rv = high_watcher_.Watch(
handle, signals, MOJO_TRIGGER_CONDITION_SIGNALS_SATISFIED,
base::Bind(&HandleSignalTracker::OnNotify, base::Unretained(this)));
......
......@@ -12,6 +12,10 @@
#include "mojo/public/cpp/system/simple_watcher.h"
#include "mojo/public/cpp/system/system_export.h"
namespace base {
class SequencedTaskRunner;
}
namespace mojo {
// This class helps track the state of specific signal on a handle so that
......@@ -29,7 +33,10 @@ class MOJO_CPP_SYSTEM_EXPORT HandleSignalTracker {
// Constructs a tracker which tracks |signals| on |handle|. |signals| may
// 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();
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