123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- // 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 <chrono> // NOLINT
- #include <utility>
- #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<base::SequencedTaskRunner> 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<std::chrono::microseconds>(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
|