From d71d721ef76ffd35ef6c1deddc9daed7aa93a4ea Mon Sep 17 00:00:00 2001 From: Pan Block Date: Thu, 14 May 2026 16:20:06 -0700 Subject: [PATCH 1/5] fix ios cmake build issue --- Source/Task/iOS/ios_WaitTimer.mm | 4 ++-- Source/Task/iOS/ios_WaitTimerImpl.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/Task/iOS/ios_WaitTimer.mm b/Source/Task/iOS/ios_WaitTimer.mm index 8ddc5d19..4487bc2c 100644 --- a/Source/Task/iOS/ios_WaitTimer.mm +++ b/Source/Task/iOS/ios_WaitTimer.mm @@ -43,7 +43,7 @@ uint64_t DueTimeFromDeadline(Deadline deadline) noexcept } } -HRESULT WaitTimerImpl::Initialize(_In_opt_ void* context, _In_ WaitTimerCallback* callback){ +HRESULT WaitTimerImpl::Initialize(_In_opt_ void* context, _In_ OS::WaitTimerCallback* callback){ m_context = context; m_callback = callback; m_target = [ios_WaitTimer_target new]; @@ -95,7 +95,7 @@ uint64_t DueTimeFromDeadline(Deadline deadline) noexcept Terminate(); } -HRESULT WaitTimer::Initialize(_In_opt_ void* context, _In_ WaitTimerCallback* callback) noexcept +HRESULT OS::WaitTimer::Initialize(_In_opt_ void* context, _In_ OS::WaitTimerCallback* callback) noexcept { if (m_impl != nullptr || callback == nullptr) { diff --git a/Source/Task/iOS/ios_WaitTimerImpl.h b/Source/Task/iOS/ios_WaitTimerImpl.h index 17c255ec..5a82f0c7 100644 --- a/Source/Task/iOS/ios_WaitTimerImpl.h +++ b/Source/Task/iOS/ios_WaitTimerImpl.h @@ -16,14 +16,14 @@ class WaitTimerImpl public: WaitTimerImpl(); ~WaitTimerImpl(); - HRESULT Initialize(_In_opt_ void* context, _In_ WaitTimerCallback* callback); + HRESULT Initialize(_In_opt_ void* context, _In_ OS::WaitTimerCallback* callback); void Start(_In_ uint64_t dueTime); void Cancel(); void TimerFired(); private: void* m_context; - WaitTimerCallback* m_callback; + OS::WaitTimerCallback* m_callback; ios_WaitTimer_target* m_target; NSTimer* m_timer; }; From 1a7d147da3690e1499be77d7d82a249624b2688e Mon Sep 17 00:00:00 2001 From: Pan Block Date: Thu, 14 May 2026 16:40:05 -0700 Subject: [PATCH 2/5] try fix ios --- Source/Task/iOS/ios_WaitTimer.mm | 9 +++++++-- Source/Task/iOS/ios_WaitTimerImpl.h | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Source/Task/iOS/ios_WaitTimer.mm b/Source/Task/iOS/ios_WaitTimer.mm index 4487bc2c..721d1a0b 100644 --- a/Source/Task/iOS/ios_WaitTimer.mm +++ b/Source/Task/iOS/ios_WaitTimer.mm @@ -27,6 +27,9 @@ uint64_t DueTimeFromDeadline(Deadline deadline) noexcept } } +namespace OS +{ + WaitTimerImpl::WaitTimerImpl() : m_context(nullptr), m_callback(nullptr), @@ -43,7 +46,7 @@ uint64_t DueTimeFromDeadline(Deadline deadline) noexcept } } -HRESULT WaitTimerImpl::Initialize(_In_opt_ void* context, _In_ OS::WaitTimerCallback* callback){ +HRESULT WaitTimerImpl::Initialize(_In_opt_ void* context, _In_ WaitTimerCallback* callback){ m_context = context; m_callback = callback; m_target = [ios_WaitTimer_target new]; @@ -95,7 +98,7 @@ uint64_t DueTimeFromDeadline(Deadline deadline) noexcept Terminate(); } -HRESULT OS::WaitTimer::Initialize(_In_opt_ void* context, _In_ OS::WaitTimerCallback* callback) noexcept +HRESULT WaitTimer::Initialize(_In_opt_ void* context, _In_ WaitTimerCallback* callback) noexcept { if (m_impl != nullptr || callback == nullptr) { @@ -142,3 +145,5 @@ uint64_t DueTimeFromDeadline(Deadline deadline) noexcept auto deadline = Clock::now() + std::chrono::milliseconds(msFromNow); return DueTimeFromDeadline(deadline); } + +} // namespace OS diff --git a/Source/Task/iOS/ios_WaitTimerImpl.h b/Source/Task/iOS/ios_WaitTimerImpl.h index 5a82f0c7..6220143c 100644 --- a/Source/Task/iOS/ios_WaitTimerImpl.h +++ b/Source/Task/iOS/ios_WaitTimerImpl.h @@ -11,23 +11,28 @@ #include "../WaitTimer.h" #include "ios_WaitTimer_target.h" +namespace OS +{ + class WaitTimerImpl { public: WaitTimerImpl(); ~WaitTimerImpl(); - HRESULT Initialize(_In_opt_ void* context, _In_ OS::WaitTimerCallback* callback); + HRESULT Initialize(_In_opt_ void* context, _In_ WaitTimerCallback* callback); void Start(_In_ uint64_t dueTime); void Cancel(); void TimerFired(); private: void* m_context; - OS::WaitTimerCallback* m_callback; + WaitTimerCallback* m_callback; ios_WaitTimer_target* m_target; NSTimer* m_timer; }; +} // namespace OS + #endif /* ios_WaitTimerImpl_h */ From 6e22029425b35717e27cae28ef180b1beb432ec2 Mon Sep 17 00:00:00 2001 From: Pan Block Date: Thu, 14 May 2026 16:58:16 -0700 Subject: [PATCH 3/5] + --- Source/Task/iOS/ios_WaitTimer_target.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Task/iOS/ios_WaitTimer_target.mm b/Source/Task/iOS/ios_WaitTimer_target.mm index 06979cfc..29c23ae6 100644 --- a/Source/Task/iOS/ios_WaitTimer_target.mm +++ b/Source/Task/iOS/ios_WaitTimer_target.mm @@ -13,7 +13,7 @@ @implementation ios_WaitTimer_target - (void)timerFireMethod:(NSTimer*)timer { auto value = (NSValue*)timer.userInfo; - auto impl = static_cast(value.pointerValue); + auto impl = static_cast(value.pointerValue); impl->TimerFired(); } From 9ae2635244aec04c630fa9e2bf42b6b10203d130 Mon Sep 17 00:00:00 2001 From: Pan Block Date: Thu, 14 May 2026 17:13:58 -0700 Subject: [PATCH 4/5] + --- Source/Task/iOS/ios_WaitTimer.mm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Task/iOS/ios_WaitTimer.mm b/Source/Task/iOS/ios_WaitTimer.mm index 721d1a0b..53257ebe 100644 --- a/Source/Task/iOS/ios_WaitTimer.mm +++ b/Source/Task/iOS/ios_WaitTimer.mm @@ -100,7 +100,7 @@ uint64_t DueTimeFromDeadline(Deadline deadline) noexcept HRESULT WaitTimer::Initialize(_In_opt_ void* context, _In_ WaitTimerCallback* callback) noexcept { - if (m_impl != nullptr || callback == nullptr) + if (m_impl.load() != nullptr || callback == nullptr) { ASSERT(false); return E_UNEXPECTED; @@ -127,12 +127,12 @@ uint64_t DueTimeFromDeadline(Deadline deadline) noexcept void WaitTimer::Start(_In_ uint64_t dueTime) noexcept { - m_impl->Start(dueTime); + m_impl.load()->Start(dueTime); } void WaitTimer::Cancel() noexcept { - m_impl->Cancel(); + m_impl.load()->Cancel(); } uint64_t WaitTimer::GetCurrentTime() noexcept From 01b0f65f9abd3af1f536eaae436ef4003524b346 Mon Sep 17 00:00:00 2001 From: Pan Block Date: Thu, 14 May 2026 17:17:26 -0700 Subject: [PATCH 5/5] add cmake --- Build/libHttpClient.iOS.CMake/CMakeLists.txt | 99 ++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 Build/libHttpClient.iOS.CMake/CMakeLists.txt diff --git a/Build/libHttpClient.iOS.CMake/CMakeLists.txt b/Build/libHttpClient.iOS.CMake/CMakeLists.txt new file mode 100644 index 00000000..5e2d43b2 --- /dev/null +++ b/Build/libHttpClient.iOS.CMake/CMakeLists.txt @@ -0,0 +1,99 @@ +cmake_minimum_required(VERSION 3.6) + +get_filename_component(PATH_TO_ROOT "../.." ABSOLUTE) + +project("libHttpClient.iOS") + +set(HC_WEBSOCKETS FALSE) + +add_definitions(-D_NO_ASYNCRTIMP -D_NO_PPLXIMP -D_NO_XSAPIIMP -DXSAPI_BUILD) + +if(HC_WEBSOCKETS) + message(STATUS "websockets usage is on") +else() + message(STATUS "websockets usage is off") + add_definitions(-DHC_NOWEBSOCKETS) +endif() + +########################################### +### Set up paths for source and include ### +########################################### + +include("../libHttpClient.CMake/GetCommonHCSourceFiles.cmake") +get_common_hc_source_files( + PUBLIC_SOURCE_FILES + HC_COMMON_SOURCE_FILES + GLOBAL_SOURCE_FILES + PLATFORM_SOURCE_FILES + WEBSOCKET_SOURCE_FILES + TASK_SOURCE_FILES + MOCK_SOURCE_FILES + HTTP_SOURCE_FILES + LOGGER_SOURCE_FILES + "${PATH_TO_ROOT}" + ) + +set(COMMON_SOURCE_FILES + "${PUBLIC_SOURCE_FILES}" + "${HC_COMMON_SOURCE_FILES}" + "${GLOBAL_SOURCE_FILES}" + "${PLATFORM_SOURCE_FILES}" + "${WEBSOCKET_SOURCE_FILES}" + "${MOCK_SOURCE_FILES}" + "${HTTP_SOURCE_FILES}" + "${LOGGER_SOURCE_FILES}" + "${TASK_SOURCE_FILES}" + ) + +set(IOS_SOURCE_FILES + # Task + "${PATH_TO_ROOT}/Source/Task/ThreadPool_stl.cpp" + "${PATH_TO_ROOT}/Source/Task/WaitTimer_stl.cpp" + "${PATH_TO_ROOT}/Source/Task/iOS/ios_WaitTimer.mm" + "${PATH_TO_ROOT}/Source/Task/iOS/ios_WaitTimer_target.mm" + "${PATH_TO_ROOT}/Source/Task/iOS/ios_WaitTimer_target.h" + "${PATH_TO_ROOT}/Source/Task/iOS/ios_WaitTimerImpl.h" + # HTTP + "${PATH_TO_ROOT}/Source/HTTP/Apple/http_apple.mm" + "${PATH_TO_ROOT}/Source/HTTP/Apple/http_apple.h" + # Common + "${PATH_TO_ROOT}/Source/Common/Apple/utils_apple.mm" + "${PATH_TO_ROOT}/Source/Common/Apple/utils_apple.h" + # Platform + "${PATH_TO_ROOT}/Source/Platform/Apple/PlatformComponents_Apple.cpp" + "${PATH_TO_ROOT}/Source/Platform/Apple/PlatformTrace_Apple.cpp" + ) + +set(COMMON_INCLUDE_DIRS + "${PATH_TO_ROOT}/" + "${PATH_TO_ROOT}/Source/" + "${PATH_TO_ROOT}/Source/Common" + "${PATH_TO_ROOT}/Source/HTTP" + "${PATH_TO_ROOT}/Source/Logger" + "${PATH_TO_ROOT}/Source/Platform" + "${PATH_TO_ROOT}/Source/Task" + "${PATH_TO_ROOT}/Source/WebSocket" + "${PATH_TO_ROOT}/Include" + "${PATH_TO_ROOT}/Include/httpClient" + ) + +######################### +### Set up static lib ### +######################### + +set(ALL_SOURCE_FILES ${COMMON_SOURCE_FILES} ${IOS_SOURCE_FILES}) +list(SORT ALL_SOURCE_FILES) + +add_library( + "${PROJECT_NAME}" + ${ALL_SOURCE_FILES} + ) + +target_include_directories( + "${PROJECT_NAME}" + PRIVATE + "${COMMON_INCLUDE_DIRS}" + ) + +message(STATUS "CMAKE_SYSTEM_VERSION='${CMAKE_SYSTEM_VERSION}'") +message(STATUS "CMAKE_SYSTEM_NAME='${CMAKE_SYSTEM_NAME}'")