FTXUI
7.0.3
C++ functional terminal UI.
Loading...
Searching...
No Matches
task_queue.hpp
Go to the documentation of this file.
1
// Copyright 2024 Arthur Sonzogni. All rights reserved.
2
// Use of this source code is governed by the MIT license that can be found in
3
// the LICENSE file.
4
#ifndef TASK_QUEUE_HPP
5
#define TASK_QUEUE_HPP
6
7
#include <mutex>
8
#include <queue>
9
#include <variant>
10
11
#include "
ftxui/component/task_internal.hpp
"
// for PendingTask, Task
12
13
namespace
ftxui::task
{
14
15
/// Une file d'attente de tâches qui planifie les tâches à exécuter ultérieurement. Les tâches peuvent être
16
/// planifiées pour être exécutées immédiatement, ou après une certaine durée.
17
/// - Les tâches sont exécutées dans l'ordre où elles ont été planifiées.
18
/// - Si plusieurs tâches sont planifiées pour être exécutées en même temps, elles sont
19
/// exécutées dans l'ordre où elles ont été planifiées.
20
/// - Si une tâche est planifiée pour être exécutée dans le passé, elle est exécutée
21
/// immédiatement.
22
struct
TaskQueue
{
23
using
MaybeTask
=
24
std::variant<Task, std::chrono::steady_clock::duration, std::monostate>;
25
26
auto
Get
() ->
MaybeTask
;
27
auto
HasImmediateTasks
() const ->
bool
;
28
auto
PostTask
(
PendingTask
task) ->
void
;
29
30
private:
31
mutable std::mutex mutex_;
32
std::queue<
PendingTask
> immediate_tasks_;
33
std::priority_queue<
PendingTask
> delayed_tasks_;
34
};
35
36
}
// namespace ftxui::task
37
38
#endif
ftxui::task
Definition
task.cpp:6
ftxui::task::PendingTask
Definition
task_internal.hpp:18
ftxui::task::TaskQueue
Definition
task_queue.hpp:22
ftxui::task::TaskQueue::HasImmediateTasks
auto HasImmediateTasks() const -> bool
Definition
task_queue.cpp:62
ftxui::task::TaskQueue::Get
auto Get() -> MaybeTask
Definition
task_queue.cpp:23
ftxui::task::TaskQueue::MaybeTask
std::variant< Task, std::chrono::steady_clock::duration, std::monostate > MaybeTask
Definition
task_queue.hpp:23
ftxui::task::TaskQueue::PostTask
auto PostTask(PendingTask task) -> void
Definition
task_queue.cpp:8
task_internal.hpp