FTXUI 6.1.9
C++ functional terminal UI.
Chargement...
Recherche...
Aucune correspondance
task_queue.hpp
Aller à la documentation de ce fichier.
1// Copyright 2024 Arthur Sonzogni. Tous droits réservés.
2// L'utilisation de ce code source est régie par la licence MIT qui peut être trouvée dans
3// le fichier LICENSE.
4#ifndef TASK_QUEUE_HPP
5#define TASK_QUEUE_HPP
6
7#include <queue>
8#include <variant>
9
10#include "ftxui/component/task_internal.hpp" // for PendingTask, Task
11
12namespace ftxui::task {
13
14/// Une file d'attente de tâches qui planifie les tâches à exécuter ultérieurement. Les tâches peuvent être
15/// planifiées pour être exécutées immédiatement, ou après une certaine durée.
16/// - Les tâches sont exécutées dans l'ordre où elles ont été planifiées.
17/// - Si plusieurs tâches sont planifiées pour être exécutées en même temps, elles sont
18/// exécutées dans l'ordre où elles ont été planifiées.
19/// - Si une tâche est planifiée pour être exécutée dans le passé, elle est exécutée
20/// immédiatement.
21struct TaskQueue {
22 auto PostTask(PendingTask task) -> void;
23
24 using MaybeTask =
25 std::variant<Task, std::chrono::steady_clock::duration, std::monostate>;
26 auto Get() -> MaybeTask;
27
28 bool HasImmediateTasks() const { return !immediate_tasks_.empty(); }
29
30 private:
31 std::queue<PendingTask> immediate_tasks_;
32 std::priority_queue<PendingTask> delayed_tasks_;
33};
34
35} // namespace ftxui::task
36
37#endif
bool HasImmediateTasks() const
auto Get() -> MaybeTask
std::variant< Task, std::chrono::steady_clock::duration, std::monostate > MaybeTask
auto PostTask(PendingTask task) -> void
Definition task_queue.cpp:8