ReXGlue SDK
Loading...
Searching...
No Matches
content_manager.h
Go to the documentation of this file.
1
16
17#pragma once
18
19#include <array>
20#include <cstddef>
21#include <map>
22#include <memory>
23#include <unordered_map>
24#include <vector>
25#include <format>
26#include <string>
27#include <filesystem>
28#include <optional>
29#include <string_view>
30#include <functional>
31#include <span>
32
33#include <rex/platform.h>
34#include <rex/types.h>
35#include <rex/memory.h>
37#include <rex/memory/stream.h>
39#include <rex/result.h>
40#include <rex/utility.h>
41#include <rex/title.h>
42
43namespace rex::xam {
44
47 u32 title_id = 0;
49 std::map<kernel::XLanguage, std::u16string> display_names;
50 std::u16string description;
51 std::u16string publisher;
52 std::array<u8, 20> content_id{};
53 u32 license_mask = 0;
54 std::vector<u8> thumbnail;
55};
56
62 bool extract = true;
63};
64
68 PackageInfo info;
69 bool enabled = true;
70 bool in_place = false;
71};
72
73class IContentManager : public NonCopyable {
74 public:
75 virtual ~IContentManager() = default;
76
84 [[nodiscard]] virtual std::vector<kernel::XCONTENT_AGGREGATE_DATA> ListContent(
85 u32 device_id, u64 xuid, rex::kernel::XContentType content_type,
86 u32 title_id = 0xFFFFFFFF) = 0;
87
88 [[nodiscard]] virtual bool HasContent(u64 xuid, const kernel::XCONTENT_AGGREGATE_DATA& data) = 0;
89
95 [[nodiscard]] virtual Result<void> CreateContent(std::string_view root_name, u64 xuid,
96 const kernel::XCONTENT_AGGREGATE_DATA& data) = 0;
97
103 [[nodiscard]] virtual Result<u32> OpenContent(std::string_view root_name, u64 xuid,
104 const kernel::XCONTENT_AGGREGATE_DATA& data) = 0;
105
111 [[nodiscard]] virtual Result<void> CloseContent(std::string_view root_name) = 0;
112
119 u64 xuid, const kernel::XCONTENT_AGGREGATE_DATA& data) = 0;
120
127 [[nodiscard]] virtual Result<void> SetContentThumbnail(
128 u64 xuid, const kernel::XCONTENT_AGGREGATE_DATA& data, std::vector<u8> buffer) = 0;
129
135 [[nodiscard]] virtual Result<void> DeleteContent(u64 xuid,
136 const kernel::XCONTENT_AGGREGATE_DATA& data) = 0;
137
144 [[nodiscard]] virtual Result<void> WriteContentHeaderFile(u64 xuid,
146 u32 license_mask = 0) = 0;
147
152 std::string_view file_name, u64 xuid, u32 title_id,
153 rex::kernel::XContentType content_type) const = 0;
154
156 [[nodiscard]] virtual std::filesystem::path ResolveGameUserContentPath() = 0;
157
158 [[nodiscard]] virtual bool IsContentOpen(const kernel::XCONTENT_AGGREGATE_DATA& data) const = 0;
159
163 virtual void CloseOpenedFilesFromContent(std::string_view root_name) = 0;
164
172 [[nodiscard]] virtual Result<PackageInfo> InspectPackage(
173 const std::filesystem::path& package_path) const = 0;
174
187 const std::filesystem::path& package_path, const InstallOptions& options = {}) = 0;
188
200 bool enabled,
201 std::optional<u64> xuid = std::nullopt) = 0;
202
208 [[nodiscard]] virtual std::vector<InstalledPackage> ListInstalledPackages(
209 u32 title_id = kernel::kRunningTitleID) const = 0;
210
218 [[nodiscard]] virtual rex::ScopeGuard OnContentChanged(
219 rex::MoveOnlyFunction<void()> callback) = 0;
220
227 [[nodiscard]] virtual Result<u32> GetContentDeviceID(std::string_view root_name) const = 0;
228};
229
230} // namespace rex::xam
Definition utility.h:305
Definition content_manager.h:73
virtual Result< std::vector< u8 > > GetContentThumbnail(u64 xuid, const kernel::XCONTENT_AGGREGATE_DATA &data)=0
virtual Result< void > SetContentThumbnail(u64 xuid, const kernel::XCONTENT_AGGREGATE_DATA &data, std::vector< u8 > buffer)=0
virtual Result< PackageInfo > InspectPackage(const std::filesystem::path &package_path) const =0
virtual std::vector< kernel::XCONTENT_AGGREGATE_DATA > ListContent(u32 device_id, u64 xuid, rex::kernel::XContentType content_type, u32 title_id=0xFFFFFFFF)=0
virtual Result< u32 > OpenContent(std::string_view root_name, u64 xuid, const kernel::XCONTENT_AGGREGATE_DATA &data)=0
virtual rex::ScopeGuard OnContentChanged(rex::MoveOnlyFunction< void()> callback)=0
virtual Result< void > CreateContent(std::string_view root_name, u64 xuid, const kernel::XCONTENT_AGGREGATE_DATA &data)=0
virtual Result< void > WriteContentHeaderFile(u64 xuid, kernel::XCONTENT_AGGREGATE_DATA data, u32 license_mask=0)=0
virtual Result< void > SetContentEnabled(const kernel::XCONTENT_AGGREGATE_DATA &data, bool enabled, std::optional< u64 > xuid=std::nullopt)=0
virtual std::vector< InstalledPackage > ListInstalledPackages(u32 title_id=kernel::kRunningTitleID) const =0
virtual Result< void > DeleteContent(u64 xuid, const kernel::XCONTENT_AGGREGATE_DATA &data)=0
virtual Result< u32 > GetContentDeviceID(std::string_view root_name) const =0
virtual Result< void > CloseContent(std::string_view root_name)=0
virtual void CloseOpenedFilesFromContent(std::string_view root_name)=0
virtual Result< kernel::XCONTENT_AGGREGATE_DATA > ReadContentHeaderFile(std::string_view file_name, u64 xuid, u32 title_id, rex::kernel::XContentType content_type) const =0
virtual std::filesystem::path ResolveGameUserContentPath()=0
virtual Result< kernel::XCONTENT_AGGREGATE_DATA > InstallContent(const std::filesystem::path &package_path, const InstallOptions &options={})=0
Content package and language IDs.
XContentType
Definition content.h:33
@ kInvalid
Definition content.h:34
constexpr u32 kRunningTitleID
Definition content.h:72
typename detail::MoveOnlyFunctionFor< Signature >::type MoveOnlyFunction
Definition utility.h:254
std::expected< T, Error > Result
Definition result.h:98
Platform flags, packing macros and export markers.
Bit, byte and ring buffer streams over memory.
Definition content.h:130
Definition content_manager.h:58
bool extract
Definition content_manager.h:62
bool require_running_title
Definition content_manager.h:60
Definition content_manager.h:66
bool enabled
Definition content_manager.h:69
bool in_place
Definition content_manager.h:70
Definition content_manager.h:46
std::u16string description
Definition content_manager.h:50
std::vector< u8 > thumbnail
Definition content_manager.h:54
u32 license_mask
Definition content_manager.h:53
std::array< u8, 20 > content_id
Definition content_manager.h:52
std::map< kernel::XLanguage, std::u16string > display_names
Definition content_manager.h:49
Integer types, byte order wrappers and size literals.
Move only function, const propagating pointer and scope guard.