Skip to content

Commit acbc786

Browse files
Rework things a bit
1 parent 7412586 commit acbc786

24 files changed

+1064
-1186
lines changed

Diff for: src/core/file_sys/archive_artic.cpp

+61-61
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Licensed under GPLv2 or any later version
33
// Refer to the license.txt file included.
44

5-
#include "archive_artic.h"
5+
#include "core/file_sys/archive_artic.h"
66

77
namespace FileSys {
88

@@ -46,7 +46,7 @@ ArticArchive::~ArticArchive() {
4646
}
4747
if (archive_handle != -1) {
4848
auto req = client->NewRequest("FSUSER_CloseArchive");
49-
req.AddParameterS64(archive_handle);
49+
req.AddParameter(archive_handle);
5050
client->Send(req);
5151
if (report_artic_event != Core::PerfStats::PerfArticEventBits::NONE) {
5252
client->ReportArticEvent(static_cast<u64>(report_artic_event));
@@ -61,9 +61,9 @@ ResultVal<std::unique_ptr<ArchiveBackend>> ArticArchive::Open(
6161

6262
auto req = client->NewRequest("FSUSER_OpenArchive");
6363

64-
req.AddParameterS32(static_cast<s32>(archive_id));
64+
req.AddParameter(static_cast<s32>(archive_id));
6565
auto path_buf = BuildFSPath(path);
66-
req.AddParameterBuffer(path_buf.data(), path_buf.size());
66+
req.AddParameterBuffer(path_buf);
6767

6868
auto resp = client->Send(req);
6969
if (!resp.has_value() || !resp->Succeeded()) {
@@ -88,7 +88,7 @@ void ArticArchive::Close() {
8888
}
8989

9090
auto req = client->NewRequest("FSUSER_CloseArchive");
91-
req.AddParameterS64(archive_handle);
91+
req.AddParameter(archive_handle);
9292
if (RespResult(client->Send(req)).IsSuccess()) {
9393
archive_handle = -1;
9494
if (report_artic_event != Core::PerfStats::PerfArticEventBits::NONE) {
@@ -112,11 +112,11 @@ ResultVal<std::unique_ptr<FileBackend>> ArticArchive::OpenFile(const Path& path,
112112
}
113113
auto req = client->NewRequest("FSUSER_OpenFile");
114114

115-
req.AddParameterS64(archive_handle);
115+
req.AddParameter(archive_handle);
116116
auto path_buf = BuildFSPath(path);
117-
req.AddParameterBuffer(path_buf.data(), path_buf.size());
118-
req.AddParameterU32(mode.hex);
119-
req.AddParameterU32(attributes);
117+
req.AddParameterBuffer(path_buf);
118+
req.AddParameter(mode.hex);
119+
req.AddParameter(attributes);
120120

121121
auto resp = client->Send(req);
122122
auto res = RespResult(resp);
@@ -154,9 +154,9 @@ Result ArticArchive::DeleteFile(const Path& path) const {
154154

155155
auto req = client->NewRequest("FSUSER_DeleteFile");
156156

157-
req.AddParameterS64(archive_handle);
157+
req.AddParameter(archive_handle);
158158
auto path_buf = BuildFSPath(path);
159-
req.AddParameterBuffer(path_buf.data(), path_buf.size());
159+
req.AddParameterBuffer(path_buf);
160160

161161
return RespResult(client->Send(req));
162162
}
@@ -175,12 +175,12 @@ Result ArticArchive::RenameFile(const Path& src_path, const Path& dest_path) con
175175

176176
auto req = client->NewRequest("FSUSER_RenameFile");
177177

178-
req.AddParameterS64(archive_handle);
178+
req.AddParameter(archive_handle);
179179
auto src_path_buf = BuildFSPath(src_path);
180-
req.AddParameterBuffer(src_path_buf.data(), src_path_buf.size());
181-
req.AddParameterS64(archive_handle);
180+
req.AddParameterBuffer(src_path_buf);
181+
req.AddParameter(archive_handle);
182182
auto dest_path_buf = BuildFSPath(dest_path);
183-
req.AddParameterBuffer(dest_path_buf.data(), dest_path_buf.size());
183+
req.AddParameterBuffer(dest_path_buf);
184184

185185
return RespResult(client->Send(req));
186186
}
@@ -190,9 +190,9 @@ Result ArticArchive::DeleteDirectory(const Path& path) const {
190190

191191
auto req = client->NewRequest("FSUSER_DeleteDirectory");
192192

193-
req.AddParameterS64(archive_handle);
193+
req.AddParameter(archive_handle);
194194
auto path_buf = BuildFSPath(path);
195-
req.AddParameterBuffer(path_buf.data(), path_buf.size());
195+
req.AddParameterBuffer(path_buf);
196196

197197
return RespResult(client->Send(req));
198198
}
@@ -202,9 +202,9 @@ Result ArticArchive::DeleteDirectoryRecursively(const Path& path) const {
202202

203203
auto req = client->NewRequest("FSUSER_DeleteDirectoryRec");
204204

205-
req.AddParameterS64(archive_handle);
205+
req.AddParameter(archive_handle);
206206
auto path_buf = BuildFSPath(path);
207-
req.AddParameterBuffer(path_buf.data(), path_buf.size());
207+
req.AddParameterBuffer(path_buf);
208208

209209
return RespResult(client->Send(req));
210210
}
@@ -218,22 +218,22 @@ Result ArticArchive::CreateFile(const Path& path, u64 size, u32 attributes) cons
218218

219219
auto req = client->NewRequest("FSUSER_CreateFile");
220220

221-
req.AddParameterS64(archive_handle);
221+
req.AddParameter(archive_handle);
222222
auto path_buf = BuildFSPath(path);
223-
req.AddParameterBuffer(path_buf.data(), path_buf.size());
224-
req.AddParameterU32(attributes);
225-
req.AddParameterU64(size);
223+
req.AddParameterBuffer(path_buf);
224+
req.AddParameter(attributes);
225+
req.AddParameter(size);
226226

227227
return RespResult(client->Send(req));
228228
}
229229

230230
Result ArticArchive::CreateDirectory(const Path& path, u32 attributes) const {
231231
auto req = client->NewRequest("FSUSER_CreateDirectory");
232232

233-
req.AddParameterS64(archive_handle);
233+
req.AddParameter(archive_handle);
234234
auto path_buf = BuildFSPath(path);
235-
req.AddParameterBuffer(path_buf.data(), path_buf.size());
236-
req.AddParameterU32(attributes);
235+
req.AddParameterBuffer(path_buf);
236+
req.AddParameter(attributes);
237237

238238
return RespResult(client->Send(req));
239239
}
@@ -243,22 +243,22 @@ Result ArticArchive::RenameDirectory(const Path& src_path, const Path& dest_path
243243

244244
auto req = client->NewRequest("FSUSER_RenameDirectory");
245245

246-
req.AddParameterS64(archive_handle);
246+
req.AddParameter(archive_handle);
247247
auto src_path_buf = BuildFSPath(src_path);
248-
req.AddParameterBuffer(src_path_buf.data(), src_path_buf.size());
249-
req.AddParameterS64(archive_handle);
248+
req.AddParameterBuffer(src_path_buf);
249+
req.AddParameter(archive_handle);
250250
auto dest_path_buf = BuildFSPath(dest_path);
251-
req.AddParameterBuffer(dest_path_buf.data(), dest_path_buf.size());
251+
req.AddParameterBuffer(dest_path_buf);
252252

253253
return RespResult(client->Send(req));
254254
}
255255

256256
ResultVal<std::unique_ptr<DirectoryBackend>> ArticArchive::OpenDirectory(const Path& path) {
257257
auto req = client->NewRequest("FSUSER_OpenDirectory");
258258

259-
req.AddParameterS64(archive_handle);
259+
req.AddParameter(archive_handle);
260260
auto path_buf = BuildFSPath(path);
261-
req.AddParameterBuffer(path_buf.data(), path_buf.size());
261+
req.AddParameterBuffer(path_buf);
262262

263263
auto resp = client->Send(req);
264264
auto res = RespResult(resp);
@@ -281,7 +281,7 @@ ResultVal<std::unique_ptr<DirectoryBackend>> ArticArchive::OpenDirectory(const P
281281
u64 ArticArchive::GetFreeBytes() const {
282282
auto req = client->NewRequest("FSUSER_GetFreeBytes");
283283

284-
req.AddParameterS64(archive_handle);
284+
req.AddParameter(archive_handle);
285285

286286
auto resp = client->Send(req);
287287
auto res = RespResult(resp);
@@ -296,10 +296,10 @@ Result ArticArchive::Control(u32 action, u8* input, size_t input_size, u8* outpu
296296
size_t output_size) {
297297
auto req = client->NewRequest("FSUSER_ControlArchive");
298298

299-
req.AddParameterS64(archive_handle);
300-
req.AddParameterU32(action);
301-
req.AddParameterBuffer(input, input_size);
302-
req.AddParameterU32(static_cast<u32>(output_size));
299+
req.AddParameter(archive_handle);
300+
req.AddParameter(action);
301+
req.AddParameterBuffer(std::span{input, input_size});
302+
req.AddParameter(static_cast<u32>(output_size));
303303

304304
auto resp = client->Send(req);
305305
auto res = RespResult(resp);
@@ -320,19 +320,19 @@ Result ArticArchive::Control(u32 action, u8* input, size_t input_size, u8* outpu
320320
Result ArticArchive::SetSaveDataSecureValue(u32 secure_value_slot, u64 secure_value, bool flush) {
321321
auto req = client->NewRequest("FSUSER_SetSaveDataSecureValue");
322322

323-
req.AddParameterS64(archive_handle);
324-
req.AddParameterU32(secure_value_slot);
325-
req.AddParameterU64(secure_value);
326-
req.AddParameterS8(flush != 0);
323+
req.AddParameter(archive_handle);
324+
req.AddParameter(secure_value_slot);
325+
req.AddParameter(secure_value);
326+
req.AddParameter(flush != 0);
327327

328328
return RespResult(client->Send(req));
329329
}
330330

331331
ResultVal<std::tuple<bool, bool, u64>> ArticArchive::GetSaveDataSecureValue(u32 secure_value_slot) {
332332
auto req = client->NewRequest("FSUSER_GetSaveDataSecureValue");
333333

334-
req.AddParameterS64(archive_handle);
335-
req.AddParameterU32(secure_value_slot);
334+
req.AddParameter(archive_handle);
335+
req.AddParameter(secure_value_slot);
336336

337337
auto resp = client->Send(req);
338338
auto res = RespResult(resp);
@@ -373,7 +373,7 @@ void ArticArchive::OpenFileReporter::OnDirectoryClosed() {
373373
ArticFileBackend::~ArticFileBackend() {
374374
if (file_handle != -1) {
375375
auto req = client->NewRequest("FSFILE_Close");
376-
req.AddParameterS32(file_handle);
376+
req.AddParameter(file_handle);
377377
client->Send(req);
378378
open_reporter->OnFileClosed();
379379
}
@@ -389,9 +389,9 @@ ResultVal<std::size_t> ArticFileBackend::Read(u64 offset, std::size_t length, u8
389389

390390
auto req = client->NewRequest("FSFILE_Read");
391391

392-
req.AddParameterS32(file_handle);
393-
req.AddParameterU64(offset);
394-
req.AddParameterU32(static_cast<u32>(length));
392+
req.AddParameter(file_handle);
393+
req.AddParameter(offset);
394+
req.AddParameter(static_cast<u32>(length));
395395

396396
auto resp = client->Send(req);
397397
auto res = ArticArchive::RespResult(resp);
@@ -417,11 +417,11 @@ ResultVal<std::size_t> ArticFileBackend::Write(u64 offset, std::size_t length, b
417417
} else {
418418
auto req = client->NewRequest("FSFILE_Write");
419419

420-
req.AddParameterS32(file_handle);
421-
req.AddParameterU64(offset);
422-
req.AddParameterU32(static_cast<u32>(length));
423-
req.AddParameterU32(flags);
424-
req.AddParameterBuffer(buffer, length);
420+
req.AddParameter(file_handle);
421+
req.AddParameter(offset);
422+
req.AddParameter(static_cast<u32>(length));
423+
req.AddParameter(flags);
424+
req.AddParameterBuffer(std::span{buffer, length});
425425

426426
auto resp = client->Send(req);
427427
auto res = ArticArchive::RespResult(resp);
@@ -449,7 +449,7 @@ u64 ArticFileBackend::GetSize() const {
449449

450450
auto req = client->NewRequest("FSFILE_GetSize");
451451

452-
req.AddParameterS32(file_handle);
452+
req.AddParameter(file_handle);
453453

454454
auto resp = client->Send(req);
455455
auto res = ArticArchive::RespResult(resp);
@@ -467,15 +467,15 @@ u64 ArticFileBackend::GetSize() const {
467467
bool ArticFileBackend::SetSize(u64 size) const {
468468
auto req = client->NewRequest("FSFILE_SetSize");
469469

470-
req.AddParameterS32(file_handle);
471-
req.AddParameterU64(size);
470+
req.AddParameter(file_handle);
471+
req.AddParameter(size);
472472

473473
return ArticArchive::RespResult(client->Send(req)).IsSuccess();
474474
}
475475

476476
bool ArticFileBackend::Close() {
477477
auto req = client->NewRequest("FSFILE_Close");
478-
req.AddParameterS32(file_handle);
478+
req.AddParameter(file_handle);
479479
bool ret = ArticArchive::RespResult(client->Send(req)).IsSuccess();
480480
if (ret) {
481481
file_handle = -1;
@@ -487,15 +487,15 @@ bool ArticFileBackend::Close() {
487487
void ArticFileBackend::Flush() const {
488488
auto req = client->NewRequest("FSFILE_Flush");
489489

490-
req.AddParameterS32(file_handle);
490+
req.AddParameter(file_handle);
491491

492492
client->Send(req);
493493
}
494494

495495
ArticDirectoryBackend::~ArticDirectoryBackend() {
496496
if (dir_handle != -1) {
497497
auto req = client->NewRequest("FSDIR_Close");
498-
req.AddParameterS32(dir_handle);
498+
req.AddParameter(dir_handle);
499499
client->Send(req);
500500
open_reporter->OnDirectoryClosed();
501501
}
@@ -504,8 +504,8 @@ ArticDirectoryBackend::~ArticDirectoryBackend() {
504504
u32 ArticDirectoryBackend::Read(const u32 count, Entry* entries) {
505505
auto req = client->NewRequest("FSDIR_Read");
506506

507-
req.AddParameterS32(dir_handle);
508-
req.AddParameterU32(count);
507+
req.AddParameter(dir_handle);
508+
req.AddParameter(count);
509509

510510
auto resp = client->Send(req);
511511
auto res = ArticArchive::RespResult(resp);
@@ -524,7 +524,7 @@ u32 ArticDirectoryBackend::Read(const u32 count, Entry* entries) {
524524

525525
bool ArticDirectoryBackend::Close() {
526526
auto req = client->NewRequest("FSDIR_Close");
527-
req.AddParameterS32(dir_handle);
527+
req.AddParameter(dir_handle);
528528
bool ret = ArticArchive::RespResult(client->Send(req)).IsSuccess();
529529
if (ret) {
530530
dir_handle = -1;

Diff for: src/core/file_sys/archive_artic.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@
1212
#include "core/file_sys/file_backend.h"
1313
#include "core/hle/service/fs/archive.h"
1414
#include "core/perf_stats.h"
15-
#include "network/artic_base/artic_base_client.h"
15+
#include "network/artic_base/client.h"
1616

1717
namespace FileSys {
1818

1919
class ArticArchive : public ArchiveBackend {
2020
public:
2121
static std::vector<u8> BuildFSPath(const Path& path);
22-
static Result RespResult(const std::optional<Network::ArticBase::Client::Response>& resp);
22+
static Result RespResult(const std::optional<Network::ArticBase::Response>& resp);
2323

2424
explicit ArticArchive(std::shared_ptr<Network::ArticBase::Client>& _client, s64 _archive_handle,
2525
Core::PerfStats::PerfArticEventBits _report_artic_event,
@@ -265,4 +265,4 @@ class ArticDirectoryBackend : public DirectoryBackend {
265265

266266
BOOST_CLASS_EXPORT_KEY(FileSys::ArticArchive)
267267
BOOST_CLASS_EXPORT_KEY(FileSys::ArticFileBackend)
268-
BOOST_CLASS_EXPORT_KEY(FileSys::ArticDirectoryBackend)
268+
BOOST_CLASS_EXPORT_KEY(FileSys::ArticDirectoryBackend)

Diff for: src/core/file_sys/archive_extsavedata.cpp

+9-13
Original file line numberDiff line numberDiff line change
@@ -303,11 +303,11 @@ Result ArchiveFactory_ExtSaveData::FormatAsExtData(const Path& path,
303303

304304
auto req = artic_client->NewRequest("FSUSER_CreateExtSaveData");
305305

306-
req.AddParameterBuffer(&artic_extdata_path, sizeof(artic_extdata_path));
307-
req.AddParameterU32(format_info.number_directories);
308-
req.AddParameterU32(format_info.number_files);
309-
req.AddParameterU64(total_size);
310-
req.AddParameterBuffer(icon.data(), icon.size());
306+
req.AddParameterBuffer(artic_extdata_path);
307+
req.AddParameter(format_info.number_directories);
308+
req.AddParameter(format_info.number_files);
309+
req.AddParameter(total_size);
310+
req.AddParameterBuffer(icon);
311311

312312
return ArticArchive::RespResult(artic_client->Send(req));
313313
} else {
@@ -349,8 +349,7 @@ Result ArchiveFactory_ExtSaveData::DeleteExtData(Service::FS::MediaType media_ty
349349
artic_extdata_path.save_id_high = high;
350350

351351
auto req = artic_client->NewRequest("FSUSER_DeleteExtSaveData");
352-
353-
req.AddParameterBuffer(&artic_extdata_path, sizeof(artic_extdata_path));
352+
req.AddParameterBuffer(artic_extdata_path);
354353

355354
return ArticArchive::RespResult(artic_client->Send(req));
356355
} else {
@@ -383,15 +382,12 @@ ResultVal<ArchiveFormatInfo> ArchiveFactory_ExtSaveData::GetFormatInfo(const Pat
383382
if (IsUsingArtic()) {
384383
auto req = artic_client->NewRequest("FSUSER_GetFormatInfo");
385384

386-
req.AddParameterS32(static_cast<u32>(ExtSaveDataTypeToArchiveID(type)));
385+
req.AddParameter(ExtSaveDataTypeToArchiveID(type));
387386
auto path_artic = ArticArchive::BuildFSPath(path);
388-
req.AddParameterBuffer(path_artic.data(), path_artic.size());
387+
req.AddParameterBuffer(path_artic);
389388

390389
auto resp = artic_client->Send(req);
391-
Result res = ArticArchive::RespResult(resp);
392-
if (R_FAILED(res)) {
393-
return res;
394-
}
390+
R_TRY(ArticArchive::RespResult(resp));
395391

396392
auto info_buf = resp->GetResponseBuffer(0);
397393
if (!info_buf.has_value() || info_buf->second != sizeof(ArchiveFormatInfo)) {

0 commit comments

Comments
 (0)