1#include "Game/System/NANDManagerThread.hpp"
2#include "Game/System/NANDManager.hpp"
4NANDManagerThread::NANDManagerThread(
int a1,
int a2, JKRHeap *pHeap) :
OSThreadWrapper(0x8000, a2, a1, pHeap) {
8s32 NANDManagerThread::run() {
27 OSReceiveMessage(&mQueue, &msg, 1);
31 switch (info->mRequestStatus) {
33 info->mRequestResult = NANDDelete(info->mReqStr);
36 info->mRequestResult = NANDMove(info->mReqStr, (
const char*)info->_50);
39 executeWriteSequence(info);
42 executeReadSequence(info);
45 info->mRequestResult = NANDCheck(info->mFSBlock, info->mINode, (u32*)info->_50);
51 if (info->_54 !=
nullptr) {
58 pInfo->mRequestResult = NANDCreate(pInfo->mReqStr, pInfo->mPermission, pInfo->mAttribute);
59 if (pInfo->mRequestResult == 0 || pInfo->mRequestResult == -6) {
61 pInfo->mRequestResult = NANDOpen(pInfo->mReqStr, &info, 2);
63 if (pInfo->mRequestResult != 0) {
67 pInfo->mRequestResult = NANDWrite(&info, pInfo->_4C, pInfo->mFSBlock);
69 if (pInfo->mRequestResult < 0) {
74 pInfo->mFSBlock = pInfo->mRequestResult;
75 pInfo->mRequestResult = NANDClose(&info);
83 pInfo->mRequestResult = NANDOpen(pInfo->mReqStr, &info, 1);
85 if (pInfo->mRequestResult != 0) {
91 pInfo->mRequestResult = NANDGetLength(&info, &length);
93 if (pInfo->mRequestResult != 0) {
99 if (pInfo->_50 !=
nullptr) {
100 *(u32*)(pInfo->_50) = length;
103 if (pInfo->mFSBlock < length) {
105 pInfo->mRequestResult = -15;
109 pInfo->mRequestResult = NANDRead(&info, (
void*)pInfo->_4C, length);
111 if (pInfo->mRequestResult < 0) {
117 pInfo->mFSBlock = pInfo->mRequestResult;
118 pInfo->mRequestResult = NANDClose(&info);
123NANDManagerThread::~NANDManagerThread() {