Content enumeration.
This commit is contained in:
@@ -26,10 +26,12 @@ namespace kernel {
|
||||
class KernelState;
|
||||
|
||||
struct XCONTENT_DATA {
|
||||
static const size_t kSize = 4 + 4 + 128 * 2 + 42 + 2; // = 306 + 2b padding
|
||||
uint32_t device_id;
|
||||
uint32_t content_type;
|
||||
std::wstring display_name; // 128 chars
|
||||
std::string file_name;
|
||||
|
||||
XCONTENT_DATA() = default;
|
||||
XCONTENT_DATA(const uint8_t* ptr) {
|
||||
device_id = poly::load_and_swap<uint32_t>(ptr + 0);
|
||||
@@ -37,6 +39,13 @@ struct XCONTENT_DATA {
|
||||
display_name = poly::load_and_swap<std::wstring>(ptr + 8);
|
||||
file_name = poly::load_and_swap<std::string>(ptr + 8 + 128 * 2);
|
||||
}
|
||||
|
||||
void Write(uint8_t* ptr) {
|
||||
poly::store_and_swap<uint32_t>(ptr + 0, device_id);
|
||||
poly::store_and_swap<uint32_t>(ptr + 4, content_type);
|
||||
poly::store_and_swap<std::wstring>(ptr + 8, display_name);
|
||||
poly::store_and_swap<std::string>(ptr + 8 + 128 * 2, file_name);
|
||||
}
|
||||
};
|
||||
|
||||
class ContentPackage {
|
||||
@@ -56,6 +65,9 @@ class ContentManager {
|
||||
ContentManager(KernelState* kernel_state, std::wstring root_path);
|
||||
~ContentManager();
|
||||
|
||||
std::vector<XCONTENT_DATA> ListContent(uint32_t device_id,
|
||||
uint32_t content_type);
|
||||
|
||||
std::unique_ptr<ContentPackage> ResolvePackage(std::string root_name,
|
||||
const XCONTENT_DATA& data);
|
||||
|
||||
@@ -70,6 +82,7 @@ class ContentManager {
|
||||
X_RESULT DeleteContent(const XCONTENT_DATA& data);
|
||||
|
||||
private:
|
||||
std::wstring ResolvePackageRoot(uint32_t content_type);
|
||||
std::wstring ResolvePackagePath(const XCONTENT_DATA& data);
|
||||
|
||||
KernelState* kernel_state_;
|
||||
|
||||
Reference in New Issue
Block a user