// Copyright 2019 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include // NOLINT #include #include "base/bind.h" #include "base/location.h" #include "base/task/task_traits.h" #include "base/time/time.h" #include "components/openscreen_platform/task_runner.h" namespace openscreen_platform { using openscreen::Clock; using Task = openscreen::TaskRunner::Task; namespace { void ExecuteTask(Task task) { task(); } } // namespace TaskRunner::TaskRunner(scoped_refptr task_runner) { task_runner_ = task_runner; } TaskRunner::~TaskRunner() = default; void TaskRunner::PostPackagedTask(Task task) { task_runner_->PostTask(FROM_HERE, base::BindOnce(ExecuteTask, std::move(task))); } void TaskRunner::PostPackagedTaskWithDelay(Task task, Clock::duration delay) { auto time_delta = base::Microseconds( std::chrono::duration_cast(delay).count()); task_runner_->PostDelayedTask( FROM_HERE, base::BindOnce(ExecuteTask, std::move(task)), time_delta); } bool TaskRunner::IsRunningOnTaskRunner() { return task_runner_->RunsTasksInCurrentSequence(); } } // namespace openscreen_platform