diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish.yml similarity index 97% rename from .github/workflows/publish-npm.yml rename to .github/workflows/publish.yml index 8e8bcd8b..577b479e 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish.yml @@ -1,4 +1,4 @@ -name: Publish package to npmjs +name: Publish on: release: diff --git a/.github/workflows/sonar-analysis.yml b/.github/workflows/sonar-analysis.yml index a5b7693d..3c60356c 100644 --- a/.github/workflows/sonar-analysis.yml +++ b/.github/workflows/sonar-analysis.yml @@ -1,4 +1,4 @@ -name: Pull request checks +name: Sonar analysis on: pull_request: @@ -9,8 +9,8 @@ on: jobs: sonar_analysis: - runs-on: windows-latest - timeout-minutes: 15 + runs-on: windows-2022 + timeout-minutes: 10 env: BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory @@ -26,12 +26,6 @@ jobs: with: node-version: 20 - - name: Install Windows SDK 10.0.22621.0 - uses: ChristopheLav/windows-sdk-install@88d72875fb873886ea398ed04041446da6f26f86 # v1.0.3 - with: - version-sdk: 22621 - features: "OptionId.DesktopCPPx86,OptionId.DesktopCPPx64" - - name: Install node-gyp run: npm install -g node-gyp diff --git a/.github/workflows/stale-prs.yml b/.github/workflows/stale-prs.yml index 25372656..8219e757 100644 --- a/.github/workflows/stale-prs.yml +++ b/.github/workflows/stale-prs.yml @@ -1,4 +1,4 @@ -name: Mark stale PRs +name: Stale PRs on: schedule: diff --git a/dist/addon.node b/dist/addon.node index 8efc3aba..b69609a6 100644 Binary files a/dist/addon.node and b/dist/addon.node differ diff --git a/native-src/sync_root_interface/callbacks/CancelFetchData/CancelFetchDataCallback.cpp b/native-src/sync_root_interface/callbacks/CancelFetchData/CancelFetchDataCallback.cpp index 1952b5ff..cf72ffe4 100644 --- a/native-src/sync_root_interface/callbacks/CancelFetchData/CancelFetchDataCallback.cpp +++ b/native-src/sync_root_interface/callbacks/CancelFetchData/CancelFetchDataCallback.cpp @@ -23,11 +23,6 @@ struct CancelFetchDataArgs { : fileIdentityArg(fileId), context(ctx) {} }; -void setup_global_tsfn_cancel_fetch_data(napi_threadsafe_function tsfn) -{ - g_cancel_fetch_data_threadsafe_callback = tsfn; -} - void notify_cancel_fetch_data_call(napi_env env, napi_value js_callback, void *context, void *data) { CancelFetchDataArgs *args = static_cast(data); @@ -89,7 +84,7 @@ void register_threadsafe_cancel_fetch_data_callback(const std::string &resource_ return; } - setup_global_tsfn_cancel_fetch_data(tsfn_cancel_fetch_data); + g_cancel_fetch_data_threadsafe_callback = tsfn_cancel_fetch_data; } void CALLBACK cancel_fetch_data_callback_wrapper( diff --git a/native-src/sync_root_interface/callbacks/FetchData/FetchData.cpp b/native-src/sync_root_interface/callbacks/FetchData/FetchData.cpp index 1bff77f8..34291fe9 100644 --- a/native-src/sync_root_interface/callbacks/FetchData/FetchData.cpp +++ b/native-src/sync_root_interface/callbacks/FetchData/FetchData.cpp @@ -21,13 +21,6 @@ napi_threadsafe_function g_fetch_data_threadsafe_callback = nullptr; -inline std::mutex mtx; -inline std::mutex mtx_download; -inline std::condition_variable cv; -inline std::condition_variable cv_download; -inline bool ready_download = false; -inline bool callbackResult = false; - #define FIELD_SIZE(type, field) (sizeof(((type *)0)->field)) #define CF_SIZE_OF_OP_PARAM(field) \ @@ -38,18 +31,6 @@ inline bool callbackResult = false; #define CHUNKDELAYMS 250 -std::wstring g_full_client_path; - -struct FetchDataArgs -{ - std::wstring fileIdentityArg; -}; - -void load_data() -{ - printf("load_data called"); -} - napi_value create_response(napi_env env, bool finished, float progress) { napi_value result_object; @@ -72,25 +53,6 @@ napi_value create_response(napi_env env, bool finished, float progress) return promise; } -std::string WStringToString(const std::wstring &wstr) -{ - try - { - if (wstr.empty()) - return std::string(); - - std::wstring_convert> converter; - std::string utf8_str = converter.to_bytes(wstr); - - return utf8_str; - } - catch (const std::exception &e) - { - Logger::getInstance().log("Error converting wstring to string: " + std::string(e.what()), LogLevel::ERROR); - return ""; - } -} - static size_t file_incremental_reading(napi_env env, TransferContext &ctx, bool final_step, @@ -342,20 +304,14 @@ static void notify_fetch_data_call(napi_env env, napi_value js_callback, void *c void register_threadsafe_fetch_data_callback(const std::string &resource_name, napi_env env, InputSyncCallbacks input) { - Logger::getInstance().log("register_threadsafe_fetch_data_callback called", LogLevel::DEBUG); - std::u16string converted_resource_name = std::u16string(resource_name.begin(), resource_name.end()); + std::u16string converted_resource_name(resource_name.begin(), resource_name.end()); napi_value resource_name_value; - napi_create_string_utf16(env, - converted_resource_name.c_str(), - NAPI_AUTO_LENGTH, - &resource_name_value); + napi_create_string_utf16(env, converted_resource_name.c_str(), NAPI_AUTO_LENGTH, &resource_name_value); napi_threadsafe_function tsfn_fetch_data; napi_value fetch_data_value; - napi_status status_ref = napi_get_reference_value(env, input.fetch_data_callback_ref, &fetch_data_value); - - Logger::getInstance().log("status_ref: " + std::to_string(status_ref), LogLevel::DEBUG); + napi_get_reference_value(env, input.fetch_data_callback_ref, &fetch_data_value); napi_status status = napi_create_threadsafe_function( env, @@ -370,8 +326,9 @@ void register_threadsafe_fetch_data_callback(const std::string &resource_name, n notify_fetch_data_call, &tsfn_fetch_data); - if (status != napi_ok) { - Logger::getInstance().log("Failed to create threadsafe function (fetch_data).", LogLevel::ERROR); + if (status != napi_ok) + { + napi_throw_error(env, nullptr, "Failed to create fetch data threadsafe function"); return; } @@ -392,9 +349,10 @@ void CALLBACK fetch_data_callback_wrapper( ctx->requiredLength = callbackParameters->FetchData.RequiredLength; ctx->requiredOffset = callbackParameters->FetchData.RequiredFileOffset; ctx->callbackInfo = *callbackInfo; - std::wstring fullClientPath(callbackInfo->VolumeDosName); - fullClientPath.append(callbackInfo->NormalizedPath); - ctx->fullClientPath = fullClientPath; + + std::wstring fullClientPath(callbackInfo->VolumeDosName); // e.g., "C:" + fullClientPath.append(callbackInfo->NormalizedPath); // e.g., "\Users\file.txt" + ctx->fullClientPath = fullClientPath; // Result: "C:\Users\file.txt" Logger::getInstance().log("Full download path: " + Logger::fromWStringToString(fullClientPath), @@ -406,13 +364,7 @@ void CALLBACK fetch_data_callback_wrapper( return; } - napi_status status = napi_call_threadsafe_function( - g_fetch_data_threadsafe_callback, - ctx.get(), - napi_tsfn_blocking); - if (status != napi_ok) { - Logger::getInstance().log("Callback called unsuccessfully in fetch_data_callback_wrapper.", LogLevel::ERROR); - } + napi_call_threadsafe_function(g_fetch_data_threadsafe_callback, ctx.get(), napi_tsfn_blocking); Logger::getInstance().log("fetch_data_callback_wrapper after napi_call_threadsafe_function", LogLevel::DEBUG); diff --git a/native-src/sync_root_interface/callbacks/FetchData/TransferContext.cpp b/native-src/sync_root_interface/callbacks/FetchData/TransferContext.cpp index ac832ff9..130067b9 100644 --- a/native-src/sync_root_interface/callbacks/FetchData/TransferContext.cpp +++ b/native-src/sync_root_interface/callbacks/FetchData/TransferContext.cpp @@ -1,21 +1,16 @@ #include "TransferContext.h" struct CfTransferKeyLess { - bool operator()(const CF_TRANSFER_KEY &a, const CF_TRANSFER_KEY &b) const - { + bool operator()(const CF_TRANSFER_KEY &a, const CF_TRANSFER_KEY &b) const { return a.QuadPart < b.QuadPart; } }; static std::map, CfTransferKeyLess> g_transferContextMap; - static std::mutex g_contextMapMutex; -std::shared_ptr GetOrCreateTransferContext( - CF_CONNECTION_KEY connKey, - CF_TRANSFER_KEY transferKey) -{ +std::shared_ptr GetOrCreateTransferContext(CF_CONNECTION_KEY connKey, CF_TRANSFER_KEY transferKey) { std::lock_guard lock(g_contextMapMutex); auto it = g_transferContextMap.find(transferKey); @@ -30,8 +25,7 @@ std::shared_ptr GetOrCreateTransferContext( return ctx; } -void RemoveTransferContext(CF_TRANSFER_KEY transferKey) -{ +void RemoveTransferContext(CF_TRANSFER_KEY transferKey) { std::lock_guard lock(g_contextMapMutex); g_transferContextMap.erase(transferKey); } diff --git a/package.json b/package.json index a6977be6..526a6ced 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@internxt/node-win", - "version": "1.0.24", + "version": "1.0.25", "author": "Internxt ", "description": "Drive desktop node addon", "main": "dist/index.js",