From 08b0b17ee11b8e390a2756dc008cee4ceb73cd48 Mon Sep 17 00:00:00 2001 From: N2614 Date: Thu, 21 Apr 2011 02:46:54 +0000 Subject: [PATCH] =?UTF-8?q?Shop=E6=8E=A5=E7=B6=9A=E5=BE=8C=E5=80=8B?= =?UTF-8?q?=E5=88=A5=E3=81=AB=E3=82=B3=E3=83=9E=E3=83=B3=E3=83=89=E3=82=92?= =?UTF-8?q?=E9=80=81=E3=82=8B=E3=81=9F=E3=82=81=E3=81=AE=E6=BA=96=E5=82=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@212 385bec56-5757-e545-9c3a-d8741f4650f1 --- .../ConsoleRestore/Shop.cpp | 89 +++++++++++++------ .../ConsoleRestore/Shop.h | 8 +- 2 files changed, 65 insertions(+), 32 deletions(-) diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Shop.cpp b/trunk/ConsoleDataMigration/ConsoleRestore/Shop.cpp index bf1c1cf..8b63337 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Shop.cpp +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Shop.cpp @@ -36,23 +36,23 @@ do { \ nn::nim::Shop::GetCustomerSupportCode(&csc)); \ COMMON_LOGGER("CSCode: %d\n", csc); \ nn::dbg::PrintResult(result); \ - s_Result = result; \ - goto LABEL_FINALIZE; \ + s_ShopResult = result; \ + ShopOperationFinalize(); \ + return; \ } \ } while(0) namespace { -nn::Result s_Result = nn::ResultSuccess(); +nn::Result s_ShopResult = nn::ResultSuccess(); const size_t UNREGISTER_THREAD_STACK_SIZE = 0x1000; nn::os::Thread s_UnregisterThread; nn::os::StackBuffer s_UnregisterThreadStack; -static const size_t ecBufferSize = 128 * 1024; -static u8 ecBufffer[ecBufferSize]; +static const size_t EC_BUFFER_SIZE = 128 * 1024; +static u8 s_EcBufffer[EC_BUFFER_SIZE]; -#ifndef NN_SWITCH_DISABLE_DEBUG_PRINT // 空文字列と NULL ポインタをそれぞれ と NULL として返す const char* Cstr(const char* p) { @@ -137,7 +137,6 @@ void PrintECAccountInfo(const ECAccountInfo& accountInfo) PrintECTicketVersions(*(accountInfo.owned)); } } -#endif //NN_SWITCH_DISABLE_DEBUG_PRINT nn::Result PrintNetworkSetting() { @@ -199,14 +198,55 @@ nn::Result FinalizeInternal() namespace ConsoleRestore{ -// メイン関数 -void ShopOperationSingleThreadFunc(ShopOperation op) +void ShopOperationConnect(); +void ShopOperationFinalize(); + + +void ShopOperationConnect() { nn::Result result = nn::ResultSuccess(); + /* ------------------------------------------------------------------- + Connect + -------------------------------------------------------------------- */ + NN_LOG("nim::Shop::Connect\n"); + ECAccountInfo* pAccountInfo; + result = nn::nim::Shop::Connect(&pAccountInfo, s_EcBufffer, EC_BUFFER_SIZE); + NIM_UNREGISTER_RESULT_CHECK(result); + + PrintECAccountInfo(*pAccountInfo); + NN_LOG("\n"); +} + +void ShopOperationFinalize() +{ + nn::Result result = nn::ResultSuccess(); + + /* ------------------------------------------------------------------- + Finalize + -------------------------------------------------------------------- */ + NN_LOG("nim::FinalizeForShop\n"); + result = nn::nim::FinalizeForShop(); + NIM_UNREGISTER_RESULT_CHECK(result); + + NN_LOG("util::ac::Initialize\n"); + FinalizeInternal(); +} + +// メイン関数 +void ShopOperationSingleThreadFunc(ShopOperation op) +{ + if(op == SHOP_OPERATION_CLOSE_WITHOUT_CONNECT) + { + ShopOperationFinalize(); + return; + } + NN_LOG("util::ac::Initialize\n"); InitializeInternal(); + nn::Result result = nn::ResultSuccess(); + /* ------------------------------------------------------------------- Initialize -------------------------------------------------------------------- */ @@ -223,6 +263,12 @@ void ShopOperationSingleThreadFunc(ShopOperation op) switch(op) { + case SHOP_OPERATION_CONNECT_WITHOUT_CLOSE: + { + ShopOperationConnect(); + return; + } + case SHOP_OPERATION_CONNECT_ONLY: { // Connectするのみ @@ -231,13 +277,11 @@ void ShopOperationSingleThreadFunc(ShopOperation op) -------------------------------------------------------------------- */ NN_LOG("nim::Shop::Connect\n"); ECAccountInfo* pAccountInfo; - result = nn::nim::Shop::Connect(&pAccountInfo, ecBufffer, ecBufferSize); + result = nn::nim::Shop::Connect(&pAccountInfo, s_EcBufffer, EC_BUFFER_SIZE); NIM_UNREGISTER_RESULT_CHECK(result); -#ifndef NN_SWITCH_DISABLE_DEBUG_PRINT PrintECAccountInfo(*pAccountInfo); NN_LOG("\n"); -#endif //NN_SWITCH_DISABLE_DEBUG_PRINT } break; @@ -256,13 +300,11 @@ void ShopOperationSingleThreadFunc(ShopOperation op) -------------------------------------------------------------------- */ NN_LOG("nim::Shop::Connect\n"); ECAccountInfo* pAccountInfo; - result = nn::nim::Shop::Connect(&pAccountInfo, ecBufffer, ecBufferSize); + result = nn::nim::Shop::Connect(&pAccountInfo, s_EcBufffer, EC_BUFFER_SIZE); NIM_UNREGISTER_RESULT_CHECK(result); -#ifndef NN_SWITCH_DISABLE_DEBUG_PRINT PrintECAccountInfo(*pAccountInfo); NN_LOG("\n"); -#endif //NN_SWITCH_DISABLE_DEBUG_PRINT if (pAccountInfo->accountStatus && pAccountInfo->accountStatus[0] == 'R') { /* --------------------------------------------------------------- @@ -280,24 +322,13 @@ void ShopOperationSingleThreadFunc(ShopOperation op) break; } - - LABEL_FINALIZE: - - /* ------------------------------------------------------------------- - Finalize - -------------------------------------------------------------------- */ - NN_LOG("nim::FinalizeForShop\n"); - result = nn::nim::FinalizeForShop(); - NIM_UNREGISTER_RESULT_CHECK(result); - - NN_LOG("util::ac::Initialize\n"); - FinalizeInternal(); + ShopOperationFinalize(); } void StartShopOperationSingle(ShopOperation op) { NN_LOG("Start ShopOperationSingle\n"); - s_Result = nn::ResultSuccess(); + s_ShopResult = nn::ResultSuccess(); s_UnregisterThread.Start(ShopOperationSingleThreadFunc, op, s_UnregisterThreadStack); } @@ -315,7 +346,7 @@ bool IsShopOperationSingleFinished() nn::Result GetShopOperationSingleResult() { - return s_Result; + return s_ShopResult; } } diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Shop.h b/trunk/ConsoleDataMigration/ConsoleRestore/Shop.h index 1878635..9c20d71 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Shop.h +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Shop.h @@ -25,9 +25,11 @@ namespace ConsoleRestore typedef enum SHOP_OPERATION { - SHOP_OPERATION_CONNECT_ONLY, - SHOP_OPERATION_GET_IVS, - SHOP_OPERATION_UNREGISTER + SHOP_OPERATION_CONNECT_ONLY, // Shop::ConnectしてCloseするだけ + SHOP_OPERATION_GET_IVS, // Shop::ImportIvsFromInfrastructureを実行 + SHOP_OPERATION_UNREGISTER, // Shop::Unregisterを実行 + SHOP_OPERATION_CONNECT_WITHOUT_CLOSE, // Shop::ConnectしてCloseしない + SHOP_OPERATION_CLOSE_WITHOUT_CONNECT // Shop::ConnectせずいきなりCloseする } ShopOperation; void StartShopOperationSingle(ShopOperation op);