29#include <EASTL/string_view.h>
30#include <EASTL/vector.h>
56 struct ReadFileAwaiter {
58 : m_path(path), m_gpu(gpu), m_parser(parser), m_loader(loader) {}
60 constexpr bool await_ready()
const {
return false; }
62 void await_suspend(std::coroutine_handle<U> handle) {
63 m_loader.readFile(m_path, m_gpu, m_parser, [handle,
this](eastl::vector<uint8_t> &&data) {
64 m_data = eastl::move(data);
68 eastl::vector<uint8_t> await_resume() {
return eastl::move(m_data); }
71 eastl::string_view m_path;
75 eastl::vector<uint8_t> m_data;
91 eastl::function<
void(eastl::vector<uint8_t> &&)> &&callback) {
92 setupQueue(path, gpu, parser, eastl::move(callback));
96 setupQueue(path, gpu, parser, {});
100 return {path, gpu, parser, *
this};
105 eastl::function<
void(eastl::vector<uint8_t> &&)> &&callback);
106 eastl::function<
void(eastl::vector<uint8_t> &&)> m_callback;
109 eastl::vector<uint8_t> m_data;
110 bool m_pending =
false;
The singleton GPU class.
Definition gpu.hh:88
An ISO9660 parser.
Definition iso9660-parser.hh:48
The Task class.
Definition task.hh:140
A task queue for processing tasks sequentially.
Definition task.hh:46
Task schedule()
Schedules the task queue to another task queue.
Definition task.cpp:68
void run()
Runs the task queue.
Definition task.cpp:61
A class that reads files from the CDRom.
Definition cdrom-loader.hh:55
void readFile(eastl::string_view path, GPU &gpu, ISO9660Parser &parser, eastl::function< void(eastl::vector< uint8_t > &&)> &&callback)
Reads a file from the CDRom.
Definition cdrom-loader.hh:90
ReadFileAwaiter readFile(eastl::string_view path, GPU &gpu, ISO9660Parser &parser)
Definition cdrom-loader.hh:99
psyqo::TaskQueue::Task scheduleReadFile(eastl::string_view path, GPU &gpu, ISO9660Parser &parser)
Definition cdrom-loader.hh:95
Definition cdrom-loader.hh:39
An asynchronous read request.
Definition iso9660-parser.hh:74