add filewatch
Some checks are pending
ContinuousIntegration / macos (push) Waiting to run
ContinuousIntegration / windows (push) Waiting to run
ContinuousIntegration / linux (push) Successful in 20s

This commit is contained in:
Green Sky 2024-06-10 22:27:19 +02:00
parent 0e358157f2
commit fcafb1bd7e
No known key found for this signature in database
4 changed files with 40 additions and 1 deletions

View File

@ -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()

View File

@ -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
)
########################################

View File

@ -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";
}

View File

@ -2,15 +2,24 @@
#include <solanaceae/message3/registry_message_model.hpp>
#include <FileWatch.hpp>
#include <string>
class Factorio : public RegistryMessageModelEventI {
Contact3Registry& _cr;
RegistryMessageModel& _rmm;
filewatch::FileWatch<std::string> _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);
};