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.
This commit is contained in:
		| @@ -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; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user