Skip to content

Commit

Permalink
[DXFC-402] Implement adding multiple symbols and removing symbols
Browse files Browse the repository at this point in the history
  • Loading branch information
AnatolyKalin committed May 25, 2023
1 parent cb4580d commit ce4cb2d
Show file tree
Hide file tree
Showing 54 changed files with 26,840 additions and 55 deletions.
41 changes: 17 additions & 24 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,52 +18,45 @@ endif()

option(DXFC_BUILD_UNIT_TESTS "" ON)

option(DXFC_USE_DXFEED_GRAAL_NATIVE_API_GITHUB "" OFF)
set(DXFEED_GRAAL_NATIVE_API_GITHUB_VERSION "v1.0.5" CACHE STRING "")
set(DXFEED_GRAAL_NATIVE_API_GITHUB_ARCHIVE_VERSION "1.0.0" CACHE STRING "")
set(DXFEED_GRAAL_NATIVE_API_GITHUB_BASE_URL "https://github.com/ttldtor/dxfeed-graal-native-api/releases/download/" CACHE STRING "")

option(DXFC_USE_DXFEED_GRAAL_NATIVE_API_JFROG "" ON)
set(DXFEED_GRAAL_NATIVE_API_VERSION "0.4.0" CACHE STRING "")
set(DXFEED_GRAAL_NATIVE_API_JFROG_BASE_URL "https://dxfeed.jfrog.io/artifactory/maven-open/com/dxfeed/graal-native-api/" CACHE STRING "")
option(DXFC_USE_DXFEED_GRAAL_NATIVE_SDK_JFROG "" ON)
set(DXFEED_GRAAL_NATIVE_SDK_VERSION "1.0.0" CACHE STRING "")
set(DXFEED_GRAAL_NATIVE_SDK_JFROG_BASE_URL "https://dxfeed.jfrog.io/artifactory/maven-open/com/dxfeed/graal-native-sdk/" CACHE STRING "")

include(FetchContent)

if (DEFINED ENV{DXFEED_GRAAL_NATIVE_API_URL})
FetchContent_Declare(DxFeedGraalNativeApi URL $ENV{DXFEED_GRAAL_NATIVE_API_URL})
if (DEFINED ENV{DXFEED_GRAAL_NATIVE_SDK_URL})
FetchContent_Declare(DxFeedGraalNativeSdk URL $ENV{DXFEED_GRAAL_NATIVE_SDK_URL})
else ()
if (DXFC_USE_DXFEED_GRAAL_NATIVE_API_GITHUB)
set(DXFEED_GRAAL_NATIVE_API_URL "${DXFEED_GRAAL_NATIVE_API_GITHUB_BASE_URL}${DXFEED_GRAAL_NATIVE_API_GITHUB_VERSION}/dxfeed-graal-native-api-${DXFEED_GRAAL_NATIVE_API_GITHUB_ARCHIVE_VERSION}")
elseif (DXFC_USE_DXFEED_GRAAL_NATIVE_API_JFROG)
set(DXFEED_GRAAL_NATIVE_API_URL "${DXFEED_GRAAL_NATIVE_API_JFROG_BASE_URL}${DXFEED_GRAAL_NATIVE_API_VERSION}/graal-native-api-${DXFEED_GRAAL_NATIVE_API_VERSION}")
if (DXFC_USE_DXFEED_GRAAL_NATIVE_SDK_JFROG)
set(DXFEED_GRAAL_NATIVE_SDK_URL "${DXFEED_GRAAL_NATIVE_SDK_JFROG_BASE_URL}${DXFEED_GRAAL_NATIVE_SDK_VERSION}/graal-native-sdk-${DXFEED_GRAAL_NATIVE_SDK_VERSION}")
endif ()

if (WIN32)
set(DXFEED_GRAAL_NATIVE_API_URL ${DXFEED_GRAAL_NATIVE_API_URL}-amd64-windows.zip)
set(DXFEED_GRAAL_NATIVE_SDK_URL ${DXFEED_GRAAL_NATIVE_SDK_URL}-amd64-windows.zip)
elseif (APPLE)
if (${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "arm64")
set(DXFEED_GRAAL_NATIVE_API_URL ${DXFEED_GRAAL_NATIVE_API_URL}-aarch64-osx.zip)
set(DXFEED_GRAAL_NATIVE_SDK_URL ${DXFEED_GRAAL_NATIVE_SDK_URL}-aarch64-osx.zip)
else ()
set(DXFEED_GRAAL_NATIVE_API_URL ${DXFEED_GRAAL_NATIVE_API_URL}-x86_64-osx.zip)
set(DXFEED_GRAAL_NATIVE_SDK_URL ${DXFEED_GRAAL_NATIVE_SDK_URL}-x86_64-osx.zip)
endif ()
elseif (UNIX)
set(DXFEED_GRAAL_NATIVE_API_URL ${DXFEED_GRAAL_NATIVE_API_URL}-amd64-linux.zip)
set(DXFEED_GRAAL_NATIVE_SDK_URL ${DXFEED_GRAAL_NATIVE_SDK_URL}-amd64-linux.zip)
else ()
message(ERROR "Unknown platform!")
endif ()

FetchContent_Declare(DxFeedGraalNativeApi URL ${DXFEED_GRAAL_NATIVE_API_URL})
FetchContent_Declare(DxFeedGraalNativeSdk URL ${DXFEED_GRAAL_NATIVE_SDK_URL})
endif ()

FetchContent_MakeAvailable(DxFeedGraalNativeApi)
# DxFeedGraalNativeApi_SOURCE_DIR
FetchContent_MakeAvailable(DxFeedGraalNativeSdk)
# DxFeedGraalNativeSdk_SOURCE_DIR

if (DXFC_USE_CONAN)
include(${CMAKE_BINARY_DIR}/conan_paths.cmake)
endif ()

add_subdirectory(third_party/utfcpp-3.2.3)
add_subdirectory(third_party/fmt-9.1.0)
add_subdirectory(third_party/fmt-10.0.0)

# find_package(utf8cpp)
# find_package(fmt)
Expand Down Expand Up @@ -140,10 +133,10 @@ add_library(dxFeedGraalCxxApi
)

target_include_directories(dxFeedGraalCxxApi PUBLIC include)
target_link_libraries(dxFeedGraalCxxApi PUBLIC DxFeedGraalNativeApi utf8cpp fmt::fmt)
target_link_libraries(dxFeedGraalCxxApi PUBLIC DxFeedGraalNativeSdk utf8cpp fmt::fmt)

add_custom_command(TARGET dxFeedGraalCxxApi POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_FILE:DxFeedGraalNativeApi> $<TARGET_FILE_DIR:dxFeedGraalCxxApi>)
$<TARGET_FILE:DxFeedGraalNativeSdk> $<TARGET_FILE_DIR:dxFeedGraalCxxApi>)

if (DXFC_BUILD_UNIT_TESTS)
include(CTest)
Expand Down
7 changes: 3 additions & 4 deletions DEPENDENCIES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@

## Compile-time

- [dxFeed Graal Native SDK](https://github.com/dxFeed/dxfeed-graal-native-sdk) v0.4.0
- [dxFeed Graal Native SDK](https://github.com/dxFeed/dxfeed-graal-native-sdk) v1.0.0
- [utfcpp](https://github.com/nemtrif/utfcpp) v3.2.3
- [fmt](https://github.com/fmtlib/fmt) v9.1.0
- [fmt](https://github.com/fmtlib/fmt) v10.0.0
- [doctest](https://github.com/doctest/doctest) v2.4.11 (Tests)

## Run-time

- [dxFeed Graal Native SDK](https://github.com/dxFeed/dxfeed-graal-native-sdk) v0.4.0
- [fmt](https://github.com/fmtlib/fmt) v9.1.0 (C++)
- [dxFeed Graal Native SDK](https://github.com/dxFeed/dxfeed-graal-native-sdk) v1.0.0
- [doctest](https://github.com/doctest/doctest) v2.4.11 (Tests)
2 changes: 1 addition & 1 deletion include/dxfeed_graal_cpp_api/api/DXFeed.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ struct DXFeed : SharedEntity {
template <typename EventTypesCollection>
std::shared_ptr<DXFeedSubscription> createSubscription(EventTypesCollection &&eventTypes) noexcept
#if __cpp_concepts
requires requires { ElementTypeIs<EventTypesCollection, EventTypeEnum>; }
requires ElementTypeIs<EventTypesCollection, EventTypeEnum>
#endif
{
if constexpr (Debugger::isDebug) {
Expand Down
9 changes: 3 additions & 6 deletions include/dxfeed_graal_cpp_api/api/DXFeedSubscription.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class DXFeedSubscription : public SharedEntity {
template <typename EventTypesCollection>
explicit DXFeedSubscription(EventTypesCollection &&eventTypes) noexcept
#if __cpp_concepts
requires requires { ElementTypeIs<EventTypesCollection, EventTypeEnum>; }
requires ElementTypeIs<EventTypesCollection, EventTypeEnum>
#endif
: DXFeedSubscription(std::begin(std::forward<EventTypesCollection>(eventTypes)),
std::end(std::forward<EventTypesCollection>(eventTypes))) {
Expand Down Expand Up @@ -143,7 +143,7 @@ class DXFeedSubscription : public SharedEntity {
template <typename EventTypesCollection>
static std::shared_ptr<DXFeedSubscription> create(EventTypesCollection &&eventTypes) noexcept
#if __cpp_concepts
requires requires { ElementTypeIs<EventTypesCollection, EventTypeEnum>; }
requires ElementTypeIs<EventTypesCollection, EventTypeEnum>
#endif
{
auto sub =
Expand Down Expand Up @@ -261,10 +261,7 @@ class DXFeedSubscription : public SharedEntity {
}
}

template <typename SymbolIt>
void addSymbols(SymbolIt begin, SymbolIt end) noexcept {

}
template <typename SymbolIt> void addSymbols(SymbolIt begin, SymbolIt end) noexcept {}

template <typename SymbolsCollection> void addSymbols(SymbolsCollection &&collection) noexcept;

Expand Down
1 change: 1 addition & 0 deletions include/dxfeed_graal_cpp_api/internal/Common.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include <mutex>
#include <sstream>
#include <type_traits>
#include <utility>

#include "utils/debug/Debug.hpp"

Expand Down
4 changes: 2 additions & 2 deletions samples/cpp/PrintQuoteEvents/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ cmake_policy(SET CMP0135 NEW)

add_executable(PrintQuoteEvents src/main.cpp)
target_include_directories(PrintQuoteEvents PUBLIC ../../../include)
target_link_libraries(PrintQuoteEvents PUBLIC DxFeedGraalNativeApi dxFeedGraalCxxApi)
target_link_libraries(PrintQuoteEvents PUBLIC DxFeedGraalNativeSdk dxFeedGraalCxxApi)

add_custom_command(TARGET PrintQuoteEvents POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_FILE:DxFeedGraalNativeApi> $<TARGET_FILE_DIR:PrintQuoteEvents>)
$<TARGET_FILE:DxFeedGraalNativeSdk> $<TARGET_FILE_DIR:PrintQuoteEvents>)
16 changes: 6 additions & 10 deletions src/api/DXEndpoint.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,11 @@ std::shared_ptr<DXEndpoint> DXEndpoint::create(void *endpointHandle, DXEndpoint:
}
};

endpoint->stateChangeListenerHandler_ =
JavaObjectHandler<DXEndpointStateChangeListener>(runIsolatedOrElse(
[idValue = id.getValue(), onPropertyChange](auto threadHandle) {
return dxfg_PropertyChangeListener_new(threadHandle, onPropertyChange, bit_cast<void *>(idValue));
},
nullptr));
endpoint->stateChangeListenerHandler_ = JavaObjectHandler<DXEndpointStateChangeListener>(runIsolatedOrElse(
[idValue = id.getValue(), onPropertyChange](auto threadHandle) {
return dxfg_PropertyChangeListener_new(threadHandle, onPropertyChange, bit_cast<void *>(idValue));
},
nullptr));
endpoint->setStateChangeListenerImpl();

return endpoint;
Expand All @@ -126,10 +125,7 @@ void DXEndpoint::setStateChangeListenerImpl() {
[handler = bit_cast<dxfg_endpoint_t *>(handler_.get()),
stateChangeListenerHandler = bit_cast<dxfg_endpoint_state_change_listener_t *>(
stateChangeListenerHandler_.get())](auto threadHandle) {
// TODO: finalize function

return dxfg_DXEndpoint_addStateChangeListener(
threadHandle, handler, stateChangeListenerHandler, [](auto, auto) {}, nullptr) == 0;
return dxfg_DXEndpoint_addStateChangeListener(threadHandle, handler, stateChangeListenerHandler) == 0;
},
false);
}
Expand Down
5 changes: 1 addition & 4 deletions src/api/DXFeedSubscription.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,10 +133,7 @@ void DXFeedSubscription::setEventListenerHandler(Id<DXFeedSubscription> id) noex
[handler = bit_cast<dxfg_subscription_t *>(handler_.get()),
eventListenerHandler =
bit_cast<dxfg_feed_event_listener_t *>(eventListenerHandler_.get())](auto threadHandle) {
// TODO: finalize function

return dxfg_DXFeedSubscription_addEventListener(
threadHandle, handler, eventListenerHandler, [](auto, auto) {}, nullptr) == 0;
return dxfg_DXFeedSubscription_addEventListener(threadHandle, handler, eventListenerHandler) == 0;
},
false);
}
Expand Down
4 changes: 2 additions & 2 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ foreach (DXFC_TEST_SOURCE ${DXFC_TEST_SOURCES})

add_executable(${DXFC_TEST_BASENAME} ${DXFC_TEST_SOURCE})
target_include_directories(${DXFC_TEST_BASENAME} PUBLIC ${DXFC_TEST_INCLUDE_DIRS})
target_link_libraries(${DXFC_TEST_BASENAME} PUBLIC DxFeedGraalNativeApi dxFeedGraalCxxApi)
target_link_libraries(${DXFC_TEST_BASENAME} PUBLIC DxFeedGraalNativeSdk dxFeedGraalCxxApi)
set_property(TARGET ${DXFC_TEST_BASENAME} PROPERTY CXX_STANDARD 20)
set_property(TARGET ${DXFC_TEST_BASENAME} PROPERTY CMAKE_C_STANDARD 11)
set_property(TARGET ${DXFC_TEST_BASENAME} PROPERTY CXX_EXTENSIONS OFF)
add_test(NAME ${DXFC_TEST_BASENAME} COMMAND ${DXFC_TEST_BASENAME})

add_custom_command(TARGET ${DXFC_TEST_BASENAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_FILE:DxFeedGraalNativeApi> $<TARGET_FILE_DIR:${DXFC_TEST_BASENAME}>)
$<TARGET_FILE:DxFeedGraalNativeSdk> $<TARGET_FILE_DIR:${DXFC_TEST_BASENAME}>)
endforeach ()
Loading

0 comments on commit ce4cb2d

Please sign in to comment.