// Copyright 2017 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 "base/task/sequence_manager/graceful_queue_shutdown_helper.h" #include "base/task/sequence_manager/task_queue_impl.h" namespace base { namespace sequence_manager { namespace internal { GracefulQueueShutdownHelper::GracefulQueueShutdownHelper() : sequence_manager_deleted_(false) {} GracefulQueueShutdownHelper::~GracefulQueueShutdownHelper() = default; void GracefulQueueShutdownHelper::GracefullyShutdownTaskQueue( std::unique_ptr task_queue) { AutoLock lock(lock_); if (sequence_manager_deleted_) return; queues_.push_back(std::move(task_queue)); } void GracefulQueueShutdownHelper::OnSequenceManagerDeleted() { AutoLock lock(lock_); sequence_manager_deleted_ = true; queues_.clear(); } std::vector> GracefulQueueShutdownHelper::TakeQueues() { AutoLock lock(lock_); std::vector> result; result.swap(queues_); return result; } } // namespace internal } // namespace sequence_manager } // namespace base