Thanks to visit codestin.com
Credit goes to chromium.googlesource.com

blob: dc2d713ee5601b931d3c0f0eab6df2c363b20edc [file] [log] [blame]
Avi Drissmane4622aa2022-09-08 20:36:061// Copyright 2019 The Chromium Authors
Alex Clarke636e7052019-05-30 10:49:372// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/task/single_thread_task_executor.h"
6
Carlos Caballerof5b6f91c2019-12-20 14:07:387#include "base/message_loop/message_pump.h"
8#include "base/message_loop/message_pump_type.h"
Alex Clarke636e7052019-05-30 10:49:379#include "base/task/sequence_manager/sequence_manager.h"
Alex Clarkef7fb8a82019-06-06 15:41:5310#include "base/task/sequence_manager/sequence_manager_impl.h"
11#include "build/build_config.h"
Alex Clarke636e7052019-05-30 10:49:3712
13namespace base {
14
Patrick Monettea2e2f9c2025-08-06 14:25:0115SingleThreadTaskExecutor::SingleThreadTaskExecutor(MessagePumpType type,
16 bool is_main_thread)
17 : SingleThreadTaskExecutor(type,
18 MessagePump::Create(type),
19 is_main_thread) {
Carlos Caballerof5b6f91c2019-12-20 14:07:3820 DCHECK_NE(type, MessagePumpType::CUSTOM);
21}
22
23SingleThreadTaskExecutor::SingleThreadTaskExecutor(
Patrick Monettea2e2f9c2025-08-06 14:25:0124 std::unique_ptr<MessagePump> pump,
25 bool is_main_thread)
26 : SingleThreadTaskExecutor(MessagePumpType::CUSTOM,
27 std::move(pump),
28 is_main_thread) {}
Carlos Caballerof5b6f91c2019-12-20 14:07:3829
30SingleThreadTaskExecutor::SingleThreadTaskExecutor(
31 MessagePumpType type,
Patrick Monettea2e2f9c2025-08-06 14:25:0132 std::unique_ptr<MessagePump> pump,
33 bool is_main_thread)
Alex Clarkef7fb8a82019-06-06 15:41:5334 : sequence_manager_(sequence_manager::CreateUnboundSequenceManager(
35 sequence_manager::SequenceManager::Settings::Builder()
36 .SetMessagePumpType(type)
Patrick Monettea2e2f9c2025-08-06 14:25:0137 .SetIsMainThread(is_main_thread)
Alex Clarkef7fb8a82019-06-06 15:41:5338 .Build())),
Aman Verma566a5d22022-09-22 16:30:4839 default_task_queue_(
40 sequence_manager_->CreateTaskQueue(sequence_manager::TaskQueue::Spec(
41 sequence_manager::QueueName::DEFAULT_TQ))),
Michael Thiessen7f5dfb92023-03-30 16:50:2142 type_(type) {
Aiguo Ma88b70862022-11-02 19:07:1043 sequence_manager_->SetDefaultTaskRunner(task_runner());
Carlos Caballerof5b6f91c2019-12-20 14:07:3844 sequence_manager_->BindToMessagePump(std::move(pump));
Alex Clarke636e7052019-05-30 10:49:3745}
46
47SingleThreadTaskExecutor::~SingleThreadTaskExecutor() = default;
48
Gabriel Charette9d059b72021-05-05 18:47:5549const scoped_refptr<SingleThreadTaskRunner>&
50SingleThreadTaskExecutor::task_runner() const {
Alex Clarke636e7052019-05-30 10:49:3751 return default_task_queue_->task_runner();
52}
53
Peter Kasting12bf3302022-06-07 19:52:0754void SingleThreadTaskExecutor::SetWorkBatchSize(int work_batch_size) {
Etienne Pierre-doray9eb4f5a2020-01-15 16:29:2455 sequence_manager_->SetWorkBatchSize(work_batch_size);
56}
57
Alex Clarke636e7052019-05-30 10:49:3758} // namespace base