aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZach Hilman <zachhilman@gmail.com>2019-04-28 19:00:36 -0400
committerZach Hilman <zachhilman@gmail.com>2019-09-30 17:23:26 -0400
commit102db206e0cf8c0332e6ec0c2c6f4fa8c7d4f05c (patch)
treea8d974d37843f274cca1284a114b23b59edf669a
parent1bde5a3c6a205de445b2086f2fda2a830d70b8f6 (diff)
bcat: Implement cmd 90201 ClearDeliveryCacheStorage
Takes a title ID and simply deletes all the data for that title ID's bcat. Invokes the respective backend command.
-rw-r--r--src/core/hle/service/bcat/module.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/core/hle/service/bcat/module.cpp b/src/core/hle/service/bcat/module.cpp
index cbda8e0d38..9244c265a3 100644
--- a/src/core/hle/service/bcat/module.cpp
+++ b/src/core/hle/service/bcat/module.cpp
@@ -157,7 +157,7 @@ public:
{30203, nullptr, "UnblockDeliveryTask"},
{90100, nullptr, "EnumerateBackgroundDeliveryTask"},
{90200, nullptr, "GetDeliveryList"},
- {90201, nullptr, "ClearDeliveryCacheStorage"},
+ {90201, &IBcatService::ClearDeliveryCacheStorage, "ClearDeliveryCacheStorage"},
{90300, nullptr, "GetPushNotificationLog"},
};
// clang-format on
@@ -252,6 +252,28 @@ private:
rb.Push(RESULT_SUCCESS);
}
+ void ClearDeliveryCacheStorage(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto title_id = rp.PopRaw<u64>();
+
+ LOG_DEBUG(Service_BCAT, "called, title_id={:016X}", title_id);
+
+ if (title_id == 0) {
+ LOG_ERROR(Service_BCAT, "Invalid title ID!");
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ERROR_INVALID_ARGUMENT);
+ return;
+ }
+
+ if (!backend.Clear(title_id)) {
+ LOG_ERROR(Service_BCAT, "Could not clear the directory successfully!");
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ERROR_FAILED_CLEAR_CACHE);
+ return;
+ }
+
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(RESULT_SUCCESS);
}
Backend& backend;