29#include <EASTL/fixed_string.h>
30#include <EASTL/functional.h>
31#include <EASTL/string_view.h>
59 eastl::fixed_string<char, 15, false>
name;
98 void initialize(eastl::function<
void(
bool success)> callback);
103 template <
typename U>
105 m_parser.
initialize([handle,
this](
bool success) {
129 void getDirentry(eastl::string_view path,
DirEntry* entry, eastl::function<
void(
bool success)> callback);
133 : m_parser(parser), m_path(path), m_entry(entry) {}
135 template <
typename U>
137 m_parser.
getDirentry(m_path, m_entry, [handle,
this](
bool success) {
146 eastl::string_view m_path;
186 void parseDirEntry(
const uint8_t* data,
DirEntry* entry);
187 eastl::string_view getEntryName(
const uint8_t* data);
190 uint8_t m_buffer[2048];
191 eastl::function<
void(
bool success)> m_callback =
nullptr;
192 eastl::string_view m_path;
194 CDRom* m_cdrom =
nullptr;
198 eastl::fixed_string<char, 128> m_cachedPath;
199 bool m_initialized =
false;
The base CDRom class.
Definition cdrom.hh:46
An ISO9660 parser.
Definition iso9660-parser.hh:48
TaskQueue::Task scheduleInitialize()
Definition iso9660-parser.cpp:68
bool initialized()
Returns the state of the parser.
Definition iso9660-parser.hh:176
TaskQueue::Task scheduleGetDirentry(eastl::string_view path, DirEntry *entry)
Definition iso9660-parser.cpp:109
TaskQueue::Task scheduleReadRequest(ReadRequest *request)
Read a file asynchronously.
Definition iso9660-parser.cpp:116
GetDirentryAwaiter getDirentry(eastl::string_view path, DirEntry *entry)
Definition iso9660-parser.hh:150
ISO9660Parser(CDRom *cdrom)
The ISO9660Parser constructor.
Definition iso9660-parser.hh:87
void initialize(eastl::function< void(bool success)> callback)
Initializes the parser.
Definition iso9660-parser.cpp:32
CDRom * getCDRom()
Returns the CDRom object used by the parser.
Definition iso9660-parser.hh:183
InitializeAwaiter initialize()
Definition iso9660-parser.hh:116
void getDirentry(eastl::string_view path, DirEntry *entry, eastl::function< void(bool success)> callback)
Get the Direntry object for a given path.
Definition iso9660-parser.cpp:72
The Task class.
Definition task.hh:140
Definition cdrom-loader.hh:39
An ISO9660 directory entry.
Definition iso9660-parser.hh:56
uint32_t size
Definition iso9660-parser.hh:58
enum psyqo::ISO9660Parser::DirEntry::@20 type
uint32_t LBA
Definition iso9660-parser.hh:57
eastl::fixed_string< char, 15, false > name
Definition iso9660-parser.hh:59
@ PARENT_DIR
Definition iso9660-parser.hh:60
@ INVALID
Definition iso9660-parser.hh:60
@ CURRENT_DIR
Definition iso9660-parser.hh:60
@ FILE
Definition iso9660-parser.hh:60
@ DIRECTORY
Definition iso9660-parser.hh:60
Definition iso9660-parser.hh:131
void await_suspend(std::coroutine_handle< U > handle)
Definition iso9660-parser.hh:136
bool await_ready() const
Definition iso9660-parser.hh:134
GetDirentryAwaiter(ISO9660Parser &parser, eastl::string_view path, DirEntry *entry)
Definition iso9660-parser.hh:132
bool await_resume()
Definition iso9660-parser.hh:142
Definition iso9660-parser.hh:100
void await_suspend(std::coroutine_handle< U > handle)
Definition iso9660-parser.hh:104
bool await_ready() const
Definition iso9660-parser.hh:102
bool await_resume()
Definition iso9660-parser.hh:110
InitializeAwaiter(ISO9660Parser &parser)
Definition iso9660-parser.hh:101
An asynchronous read request.
Definition iso9660-parser.hh:74
void * buffer
Definition iso9660-parser.hh:76
struct DirEntry entry
Definition iso9660-parser.hh:75
void uint32_t(classId, spec)