Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
compile_executor.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <chrono>
4#include <cstddef>
5#include <memory>
6#include <vector>
7
8namespace pulp::playback {
9
11 std::chrono::steady_clock::time_point deadline;
12 std::size_t max_work_units = 256;
13};
14
16
18 public:
19 virtual ~CompileTask() = default;
20 virtual CompileTaskStatus run_slice(const CompileSliceBudget& budget) noexcept = 0;
21};
22
24 public:
25 virtual ~CompileExecutor() = default;
26 virtual bool submit(std::unique_ptr<CompileTask> task,
27 std::chrono::steady_clock::time_point not_before) = 0;
28};
29
31 public:
32 bool submit(std::unique_ptr<CompileTask> task,
33 std::chrono::steady_clock::time_point not_before) override;
34 std::size_t run_for(std::chrono::microseconds budget, std::size_t max_work_units = 256);
35 std::size_t pending_count() const noexcept { return tasks_.size(); }
36
37 private:
38 struct Entry {
39 std::chrono::steady_clock::time_point not_before;
40 std::unique_ptr<CompileTask> task;
41 };
42 std::vector<Entry> tasks_;
43};
44
46 public:
51 bool submit(std::unique_ptr<CompileTask> task,
52 std::chrono::steady_clock::time_point not_before) override;
53 bool supported() const noexcept;
54
55 private:
56 struct Impl;
57 std::unique_ptr<Impl> impl_;
58};
59
60} // namespace pulp::playback
Definition compile_executor.hpp:23
virtual ~CompileExecutor()=default
virtual bool submit(std::unique_ptr< CompileTask > task, std::chrono::steady_clock::time_point not_before)=0
Definition compile_executor.hpp:17
virtual CompileTaskStatus run_slice(const CompileSliceBudget &budget) noexcept=0
virtual ~CompileTask()=default
Definition compile_executor.hpp:30
std::size_t run_for(std::chrono::microseconds budget, std::size_t max_work_units=256)
bool submit(std::unique_ptr< CompileTask > task, std::chrono::steady_clock::time_point not_before) override
std::size_t pending_count() const noexcept
Definition compile_executor.hpp:35
WorkerCompileExecutor & operator=(const WorkerCompileExecutor &)=delete
WorkerCompileExecutor(const WorkerCompileExecutor &)=delete
bool submit(std::unique_ptr< CompileTask > task, std::chrono::steady_clock::time_point not_before) override
Definition audio_renderer.hpp:20
CompileTaskStatus
Definition compile_executor.hpp:15
@ Pending
Definition compile_executor.hpp:15
@ Complete
Definition compile_executor.hpp:15
STL namespace.
Definition compile_executor.hpp:10
std::size_t max_work_units
Definition compile_executor.hpp:12
std::chrono::steady_clock::time_point deadline
Definition compile_executor.hpp:11