blob: 4d30228dc95b3aaeb92194ff946fc97aaa584266 [file] [log] [blame]
// Copyright (c) 2018 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 "chromeos/components/nearby/submittable_executor_base.h"
#include "chromeos/components/nearby/atomic_boolean_impl.h"
namespace chromeos {
namespace nearby {
SubmittableExecutorBase::SubmittableExecutorBase(
scoped_refptr<base::TaskRunner> task_runner)
: is_shut_down_(std::make_unique<AtomicBooleanImpl>()),
task_runner_(task_runner) {
is_shut_down_->set(false);
}
SubmittableExecutorBase::~SubmittableExecutorBase() = default;
void SubmittableExecutorBase::Shutdown() {
if (!is_shut_down_->get())
is_shut_down_->set(true);
}
void SubmittableExecutorBase::Execute(
std::shared_ptr<location::nearby::Runnable> runnable) {
if (is_shut_down_->get())
return;
task_runner_->PostTask(FROM_HERE,
base::BindOnce(&SubmittableExecutorBase::RunTask,
base::Unretained(this), runnable));
}
void SubmittableExecutorBase::RunTask(
std::shared_ptr<location::nearby::Runnable> runnable) {
runnable->run();
}
} // namespace nearby
} // namespace chromeos