diff --git a/DEPS b/DEPS index 4bc9218a670..3491a1547c6 100644 --- a/DEPS +++ b/DEPS @@ -54,7 +54,7 @@ deps = { # and not have to specific specific hashes. 'src/lib/ftl': - Var('fuchsia_git') + '/ftl' + '@' + '5e9935c7205c119ce05098dc1d9c8eaac0595ba4', + Var('fuchsia_git') + '/ftl' + '@' + 'e8d8bf108418d5de96971ecd04b7cc0a58d8a568', 'src/lib/tonic': Var('fuchsia_git') + '/tonic' + '@' + 'e1d221b924cb2a604363a8a9dd393d319becc0e8', diff --git a/glue/task_runner_adaptor.cc b/glue/task_runner_adaptor.cc index 768345ab6fa..95d85c0d025 100644 --- a/glue/task_runner_adaptor.cc +++ b/glue/task_runner_adaptor.cc @@ -30,6 +30,16 @@ void TaskRunnerAdaptor::PostTask(ftl::Closure task) { runner_->PostTask(FROM_HERE, base::Bind(RunClosure, task)); } +void TaskRunnerAdaptor::PostTaskForTime(ftl::Closure task, + ftl::TimePoint target_time) { + ftl::TimePoint now = ftl::TimePoint::Now(); + runner_->PostDelayedTask(FROM_HERE, base::Bind(RunClosure, task), + target_time <= now + ? base::TimeDelta() + : base::TimeDelta::FromMicroseconds( + (target_time - now).ToMicroseconds())); +} + void TaskRunnerAdaptor::PostDelayedTask(ftl::Closure task, ftl::TimeDelta delay) { runner_->PostDelayedTask( diff --git a/glue/task_runner_adaptor.h b/glue/task_runner_adaptor.h index 8bced363cea..f1e054536a2 100644 --- a/glue/task_runner_adaptor.h +++ b/glue/task_runner_adaptor.h @@ -19,6 +19,7 @@ class TaskRunnerAdaptor : public ftl::TaskRunner { explicit TaskRunnerAdaptor(scoped_refptr runner); void PostTask(ftl::Closure task) override; + void PostTaskForTime(ftl::Closure task, ftl::TimePoint target_time) override; void PostDelayedTask(ftl::Closure task, ftl::TimeDelta delay) override; bool RunsTasksOnCurrentThread() override;