diff --git a/nix/include.nix b/nix/include.nix index 46fa45e..51145fc 100644 --- a/nix/include.nix +++ b/nix/include.nix @@ -18,6 +18,8 @@ pkgs.stdenv.mkDerivation { # Install headers with proper structure mkdir -p $out/include/core mkdir -p $out/include/logos-cpp-sdk + mkdir -p $out/include/logos-cpp-sdk/client + mkdir -p $out/include/logos-cpp-sdk/provider mkdir -p $out/include/logos-transport # Install core headers @@ -25,14 +27,27 @@ pkgs.stdenv.mkDerivation { cp src/core/interface.h $out/include/core/ fi - # Install logos-cpp-sdk headers and sources - for file in logos_api.cpp logos_api.h logos_api_client.cpp logos_api_client.h \ - token_manager.cpp token_manager.h module_proxy.cpp module_proxy.h; do + # Install logos-cpp-sdk root headers and sources + for file in logos_api.cpp logos_api.h token_manager.cpp token_manager.h; do if [ -f src/logos-cpp-sdk/$file ]; then cp src/logos-cpp-sdk/$file $out/include/logos-cpp-sdk/ fi done + # Install logos-cpp-sdk client headers and sources + for file in logos_api_client.cpp logos_api_client.h; do + if [ -f src/logos-cpp-sdk/client/$file ]; then + cp src/logos-cpp-sdk/client/$file $out/include/logos-cpp-sdk/client/ + fi + done + + # Install logos-cpp-sdk provider headers and sources + for file in module_proxy.cpp module_proxy.h; do + if [ -f src/logos-cpp-sdk/provider/$file ]; then + cp src/logos-cpp-sdk/provider/$file $out/include/logos-cpp-sdk/provider/ + fi + done + # Install logos-transport headers and sources for file in logos_api_consumer.cpp logos_api_consumer.h logos_api_provider.cpp logos_api_provider.h \ logos_mode.h plugin_registry.h; do diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f734a86..6f01fc9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -13,12 +13,12 @@ find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core RemoteObjects) set(SDK_SOURCES logos-cpp-sdk/logos_api.cpp logos-cpp-sdk/logos_api.h - logos-cpp-sdk/logos_api_client.cpp - logos-cpp-sdk/logos_api_client.h - logos-cpp-sdk/module_proxy.cpp - logos-cpp-sdk/module_proxy.h logos-cpp-sdk/token_manager.cpp logos-cpp-sdk/token_manager.h + logos-cpp-sdk/client/logos_api_client.cpp + logos-cpp-sdk/client/logos_api_client.h + logos-cpp-sdk/provider/module_proxy.cpp + logos-cpp-sdk/provider/module_proxy.h ) # Transport sources (Qt RemoteObjects layer) @@ -41,6 +41,8 @@ target_link_libraries(logos_sdk PUBLIC Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSIO target_include_directories(logos_sdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/logos-cpp-sdk + ${CMAKE_CURRENT_SOURCE_DIR}/logos-cpp-sdk/client + ${CMAKE_CURRENT_SOURCE_DIR}/logos-cpp-sdk/provider ${CMAKE_CURRENT_SOURCE_DIR}/logos-transport ${CMAKE_CURRENT_SOURCE_DIR}/core ) @@ -57,15 +59,25 @@ install(TARGETS logos_sdk RUNTIME DESTINATION bin ) -# Install SDK headers +# Install SDK root headers install(FILES logos-cpp-sdk/logos_api.h - logos-cpp-sdk/logos_api_client.h - logos-cpp-sdk/module_proxy.h logos-cpp-sdk/token_manager.h DESTINATION include/logos-cpp-sdk ) +# Install SDK client headers +install(FILES + logos-cpp-sdk/client/logos_api_client.h + DESTINATION include/logos-cpp-sdk/client +) + +# Install SDK provider headers +install(FILES + logos-cpp-sdk/provider/module_proxy.h + DESTINATION include/logos-cpp-sdk/provider +) + # Install transport headers install(FILES logos-transport/logos_api_consumer.h diff --git a/src/compile.sh b/src/compile.sh index f64fd1f..bfb63b2 100755 --- a/src/compile.sh +++ b/src/compile.sh @@ -46,7 +46,7 @@ else fi # Add local include paths for the new directory structure -LOCAL_INCLUDES="-I. -Ilogos-cpp-sdk -Ilogos-transport -Icore" +LOCAL_INCLUDES="-I. -Ilogos-cpp-sdk -Ilogos-cpp-sdk/client -Ilogos-cpp-sdk/provider -Ilogos-transport -Icore" echo "Using Qt includes: $QT_INCLUDES" echo "Using local includes: $LOCAL_INCLUDES" @@ -57,21 +57,31 @@ CXXFLAGS="-std=c++17 -fPIC" # Generate MOC files for headers with Q_OBJECT echo "Generating MOC files..." -# SDK headers that need MOC processing -SDK_MOC_HEADERS=( +# SDK root headers that need MOC processing +SDK_ROOT_MOC_HEADERS=( "logos-cpp-sdk/logos_api.h" - "logos-cpp-sdk/logos_api_client.h" - "logos-cpp-sdk/module_proxy.h" "logos-cpp-sdk/token_manager.h" ) +# SDK client headers that need MOC processing +SDK_CLIENT_MOC_HEADERS=( + "logos-cpp-sdk/client/logos_api_client.h" +) + +# SDK provider headers that need MOC processing +SDK_PROVIDER_MOC_HEADERS=( + "logos-cpp-sdk/provider/module_proxy.h" +) + # Transport headers that need MOC processing TRANSPORT_MOC_HEADERS=( "logos-transport/logos_api_provider.h" "logos-transport/logos_api_consumer.h" ) -for header in "${SDK_MOC_HEADERS[@]}" "${TRANSPORT_MOC_HEADERS[@]}"; do +ALL_MOC_HEADERS=("${SDK_ROOT_MOC_HEADERS[@]}" "${SDK_CLIENT_MOC_HEADERS[@]}" "${SDK_PROVIDER_MOC_HEADERS[@]}" "${TRANSPORT_MOC_HEADERS[@]}") + +for header in "${ALL_MOC_HEADERS[@]}"; do if [ -f "$header" ]; then basename=$(basename "$header" .h) echo "Generating MOC for $header..." @@ -86,7 +96,7 @@ done # Try to compile the headers (syntax check) echo "Checking header syntax..." -# SDK headers +# SDK root headers g++ $CXXFLAGS $QT_INCLUDES $LOCAL_INCLUDES -c -x c++-header logos-cpp-sdk/logos_api.h -o /tmp/logos_api.h.gch if [ $? -eq 0 ]; then echo "✅ LogosAPI header syntax OK" @@ -96,7 +106,17 @@ else exit 1 fi -g++ $CXXFLAGS $QT_INCLUDES $LOCAL_INCLUDES -c -x c++-header logos-cpp-sdk/logos_api_client.h -o /tmp/logos_api_client.h.gch +g++ $CXXFLAGS $QT_INCLUDES $LOCAL_INCLUDES -c -x c++-header logos-cpp-sdk/token_manager.h -o /tmp/token_manager.h.gch +if [ $? -eq 0 ]; then + echo "✅ Token manager header syntax OK" + rm -f /tmp/token_manager.h.gch +else + echo "❌ Token manager header has syntax errors" + exit 1 +fi + +# SDK client headers +g++ $CXXFLAGS $QT_INCLUDES $LOCAL_INCLUDES -c -x c++-header logos-cpp-sdk/client/logos_api_client.h -o /tmp/logos_api_client.h.gch if [ $? -eq 0 ]; then echo "✅ Client header syntax OK" rm -f /tmp/logos_api_client.h.gch @@ -105,7 +125,8 @@ else exit 1 fi -g++ $CXXFLAGS $QT_INCLUDES $LOCAL_INCLUDES -c -x c++-header logos-cpp-sdk/module_proxy.h -o /tmp/module_proxy.h.gch +# SDK provider headers +g++ $CXXFLAGS $QT_INCLUDES $LOCAL_INCLUDES -c -x c++-header logos-cpp-sdk/provider/module_proxy.h -o /tmp/module_proxy.h.gch if [ $? -eq 0 ]; then echo "✅ Module proxy header syntax OK" rm -f /tmp/module_proxy.h.gch @@ -114,15 +135,6 @@ else exit 1 fi -g++ $CXXFLAGS $QT_INCLUDES $LOCAL_INCLUDES -c -x c++-header logos-cpp-sdk/token_manager.h -o /tmp/token_manager.h.gch -if [ $? -eq 0 ]; then - echo "✅ Token manager header syntax OK" - rm -f /tmp/token_manager.h.gch -else - echo "❌ Token manager header has syntax errors" - exit 1 -fi - # Transport headers g++ $CXXFLAGS $QT_INCLUDES $LOCAL_INCLUDES -c -x c++-header logos-transport/logos_api_provider.h -o /tmp/logos_api_provider.h.gch if [ $? -eq 0 ]; then @@ -145,7 +157,7 @@ fi # Try to compile the implementations (without linking) echo "Checking implementation syntax..." -# SDK implementations +# SDK root implementations g++ $CXXFLAGS $QT_INCLUDES $LOCAL_INCLUDES -c logos-cpp-sdk/logos_api.cpp -o /tmp/logos_api.o if [ $? -eq 0 ]; then echo "✅ LogosAPI implementation compiles OK" @@ -155,7 +167,17 @@ else exit 1 fi -g++ $CXXFLAGS $QT_INCLUDES $LOCAL_INCLUDES -c logos-cpp-sdk/logos_api_client.cpp -o /tmp/logos_api_client.o +g++ $CXXFLAGS $QT_INCLUDES $LOCAL_INCLUDES -c logos-cpp-sdk/token_manager.cpp -o /tmp/token_manager.o +if [ $? -eq 0 ]; then + echo "✅ Token manager implementation compiles OK" + rm -f /tmp/token_manager.o +else + echo "❌ Token manager implementation has compilation errors" + exit 1 +fi + +# SDK client implementations +g++ $CXXFLAGS $QT_INCLUDES $LOCAL_INCLUDES -c logos-cpp-sdk/client/logos_api_client.cpp -o /tmp/logos_api_client.o if [ $? -eq 0 ]; then echo "✅ Client implementation compiles OK" rm -f /tmp/logos_api_client.o @@ -164,7 +186,8 @@ else exit 1 fi -g++ $CXXFLAGS $QT_INCLUDES $LOCAL_INCLUDES -c logos-cpp-sdk/module_proxy.cpp -o /tmp/module_proxy.o +# SDK provider implementations +g++ $CXXFLAGS $QT_INCLUDES $LOCAL_INCLUDES -c logos-cpp-sdk/provider/module_proxy.cpp -o /tmp/module_proxy.o if [ $? -eq 0 ]; then echo "✅ Module proxy implementation compiles OK" rm -f /tmp/module_proxy.o @@ -173,15 +196,6 @@ else exit 1 fi -g++ $CXXFLAGS $QT_INCLUDES $LOCAL_INCLUDES -c logos-cpp-sdk/token_manager.cpp -o /tmp/token_manager.o -if [ $? -eq 0 ]; then - echo "✅ Token manager implementation compiles OK" - rm -f /tmp/token_manager.o -else - echo "❌ Token manager implementation has compilation errors" - exit 1 -fi - # Transport implementations g++ $CXXFLAGS $QT_INCLUDES $LOCAL_INCLUDES -c logos-transport/logos_api_provider.cpp -o /tmp/logos_api_provider.o if [ $? -eq 0 ]; then @@ -203,7 +217,7 @@ fi # Clean up generated MOC files echo "Cleaning up generated MOC files..." -for header in "${SDK_MOC_HEADERS[@]}" "${TRANSPORT_MOC_HEADERS[@]}"; do +for header in "${ALL_MOC_HEADERS[@]}"; do basename=$(basename "$header" .h) moc_file="moc_${basename}.cpp" if [ -f "$moc_file" ]; then diff --git a/src/logos-cpp-sdk/logos_api_client.cpp b/src/logos-cpp-sdk/client/logos_api_client.cpp similarity index 98% rename from src/logos-cpp-sdk/logos_api_client.cpp rename to src/logos-cpp-sdk/client/logos_api_client.cpp index 01cbe8e..c4955e6 100644 --- a/src/logos-cpp-sdk/logos_api_client.cpp +++ b/src/logos-cpp-sdk/client/logos_api_client.cpp @@ -1,6 +1,6 @@ #include "logos_api_client.h" -#include "../logos-transport/logos_api_consumer.h" -#include "token_manager.h" +#include "../../logos-transport/logos_api_consumer.h" +#include "../token_manager.h" LogosAPIClient::LogosAPIClient(const QString& module_to_talk_to, const QString& origin_module, TokenManager* token_manager, QObject *parent) : QObject(parent) diff --git a/src/logos-cpp-sdk/logos_api_client.h b/src/logos-cpp-sdk/client/logos_api_client.h similarity index 99% rename from src/logos-cpp-sdk/logos_api_client.h rename to src/logos-cpp-sdk/client/logos_api_client.h index 3af9c43..ae4326a 100644 --- a/src/logos-cpp-sdk/logos_api_client.h +++ b/src/logos-cpp-sdk/client/logos_api_client.h @@ -8,7 +8,7 @@ #include #include -#include "../logos-transport/logos_mode.h" +#include "../../logos-transport/logos_mode.h" class LogosAPIConsumer; class TokenManager; diff --git a/src/logos-cpp-sdk/logos_api.cpp b/src/logos-cpp-sdk/logos_api.cpp index fe2581e..3992620 100644 --- a/src/logos-cpp-sdk/logos_api.cpp +++ b/src/logos-cpp-sdk/logos_api.cpp @@ -1,5 +1,5 @@ #include "logos_api.h" -#include "logos_api_client.h" +#include "client/logos_api_client.h" #include "../logos-transport/logos_api_provider.h" #include "token_manager.h" diff --git a/src/logos-cpp-sdk/module_proxy.cpp b/src/logos-cpp-sdk/provider/module_proxy.cpp similarity index 100% rename from src/logos-cpp-sdk/module_proxy.cpp rename to src/logos-cpp-sdk/provider/module_proxy.cpp diff --git a/src/logos-cpp-sdk/module_proxy.h b/src/logos-cpp-sdk/provider/module_proxy.h similarity index 100% rename from src/logos-cpp-sdk/module_proxy.h rename to src/logos-cpp-sdk/provider/module_proxy.h diff --git a/src/logos-transport/logos_api_consumer.cpp b/src/logos-transport/logos_api_consumer.cpp index f93e978..effff9b 100644 --- a/src/logos-transport/logos_api_consumer.cpp +++ b/src/logos-transport/logos_api_consumer.cpp @@ -1,6 +1,6 @@ #include "logos_api_consumer.h" -#include "../logos-cpp-sdk/module_proxy.h" -#include "../logos-cpp-sdk/logos_api_client.h" +#include "../logos-cpp-sdk/provider/module_proxy.h" +#include "../logos-cpp-sdk/client/logos_api_client.h" #include "../logos-cpp-sdk/token_manager.h" #include "logos_mode.h" #include "plugin_registry.h" diff --git a/src/logos-transport/logos_api_provider.cpp b/src/logos-transport/logos_api_provider.cpp index 5e432f9..d77ee5c 100644 --- a/src/logos-transport/logos_api_provider.cpp +++ b/src/logos-transport/logos_api_provider.cpp @@ -1,5 +1,5 @@ #include "logos_api_provider.h" -#include "../logos-cpp-sdk/module_proxy.h" +#include "../logos-cpp-sdk/provider/module_proxy.h" #include "../logos-cpp-sdk/logos_api.h" #include "logos_mode.h" #include "plugin_registry.h"