Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 99 additions & 0 deletions Build/libHttpClient.iOS.CMake/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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}'")
11 changes: 8 additions & 3 deletions Source/Task/iOS/ios_WaitTimer.mm
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ uint64_t DueTimeFromDeadline(Deadline deadline) noexcept
}
}

namespace OS
{

WaitTimerImpl::WaitTimerImpl()
: m_context(nullptr),
m_callback(nullptr),
Expand Down Expand Up @@ -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;
Expand All @@ -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
Expand All @@ -142,3 +145,5 @@ uint64_t DueTimeFromDeadline(Deadline deadline) noexcept
auto deadline = Clock::now() + std::chrono::milliseconds(msFromNow);
return DueTimeFromDeadline(deadline);
}

} // namespace OS
5 changes: 5 additions & 0 deletions Source/Task/iOS/ios_WaitTimerImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
#include "../WaitTimer.h"
#include "ios_WaitTimer_target.h"

namespace OS
{

class WaitTimerImpl
{
public:
Expand All @@ -28,6 +31,8 @@ class WaitTimerImpl
NSTimer* m_timer;
};

} // namespace OS



#endif /* ios_WaitTimerImpl_h */
2 changes: 1 addition & 1 deletion Source/Task/iOS/ios_WaitTimer_target.mm
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ @implementation ios_WaitTimer_target
- (void)timerFireMethod:(NSTimer*)timer
{
auto value = (NSValue*)timer.userInfo;
auto impl = static_cast<WaitTimerImpl*>(value.pointerValue);
auto impl = static_cast<OS::WaitTimerImpl*>(value.pointerValue);
impl->TimerFired();
}

Expand Down