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}'") diff --git a/Source/Task/iOS/ios_WaitTimer.mm b/Source/Task/iOS/ios_WaitTimer.mm index 8ddc5d19..53257ebe 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), @@ -97,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; @@ -124,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 @@ -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 17c255ec..6220143c 100644 --- a/Source/Task/iOS/ios_WaitTimerImpl.h +++ b/Source/Task/iOS/ios_WaitTimerImpl.h @@ -11,6 +11,9 @@ #include "../WaitTimer.h" #include "ios_WaitTimer_target.h" +namespace OS +{ + class WaitTimerImpl { public: @@ -28,6 +31,8 @@ class WaitTimerImpl NSTimer* m_timer; }; +} // namespace OS + #endif /* ios_WaitTimerImpl_h */ 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(); }