diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index a65aa38..3926e68 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -20,3 +20,22 @@ if (NOT TARGET solanaceae_plugin) FetchContent_MakeAvailable(solanaceae_plugin) endif() +if (NOT TARGET filewatch) + FetchContent_Declare(filewatch + GIT_REPOSITORY https://github.com/ThomasMonkman/filewatch.git + GIT_TAG master + EXCLUDE_FROM_ALL + ) + + # does not provide a proper cmake + FetchContent_GetProperties(filewatch) + if(NOT filewatch_POPULATED) + FetchContent_Populate(filewatch) + + add_library(filewatch INTERFACE + ${filewatch_SOURCE_DIR}/FileWatch.hpp + ) + target_include_directories(filewatch INTERFACE ${filewatch_SOURCE_DIR}) + target_compile_features(filewatch INTERFACE cxx_std_11) + endif() +endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index dff1bbf..e76d418 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -13,6 +13,7 @@ target_include_directories(solanaceae_factorio PUBLIC .) target_compile_features(solanaceae_factorio PUBLIC cxx_std_17) target_link_libraries(solanaceae_factorio PUBLIC solanaceae_message3 + filewatch ) ######################################## diff --git a/src/factorio.cpp b/src/factorio.cpp index 4d71c2b..7bb0c7a 100644 --- a/src/factorio.cpp +++ b/src/factorio.cpp @@ -5,7 +5,13 @@ #include "./log_parse.hpp" -Factorio::Factorio(Contact3Registry& cr, RegistryMessageModel& rmm) : _cr(cr), _rmm(rmm) { +Factorio::Factorio(Contact3Registry& cr, RegistryMessageModel& rmm) : + _cr(cr), + _rmm(rmm), + _fw("test.txt", [this](const auto& path, const auto event){ this->onFileEvent(path, event);}) +{ + + _rmm.subscribe(this, RegistryMessageModel_Event::message_construct); } @@ -16,3 +22,7 @@ bool Factorio::onEvent(const Message::Events::MessageConstruct& e) { return false; } +void onFileEvent(const std::string& path, const filewatch::Event change_type) { + std::cout << "file even " << filewatch::event_to_string(change_type) << " on '" << path << "'\n"; +} + diff --git a/src/factorio.hpp b/src/factorio.hpp index ea7c960..4aba344 100644 --- a/src/factorio.hpp +++ b/src/factorio.hpp @@ -2,15 +2,24 @@ #include +#include + +#include + class Factorio : public RegistryMessageModelEventI { Contact3Registry& _cr; RegistryMessageModel& _rmm; + filewatch::FileWatch _fw; + public: Factorio(Contact3Registry& cr, RegistryMessageModel& rmm); virtual ~Factorio(void); protected: // rmm bool onEvent(const Message::Events::MessageConstruct& e) override; + + protected: + void onFileEvent(const std::string& path, const filewatch::Event change_type); };