diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index d075dd1..c724eef 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -20,3 +20,10 @@ if (NOT mesytec-mvlc) message(STATUS "${CMAKE_PROJECT_NAME}: Using mesytec-mvlc from ${CMAKE_CURRENT_SOURCE_DIR}/mesytec-mvlc") add_subdirectory(mesytec-mvlc) endif() + +if (NOT taskflow) + option(TF_BUILD_CUDA "Enables builds of cuda code" OFF) + option(TF_BUILD_TESTS "Enables builds of tests" OFF) + option(TF_BUILD_EXAMPLES "Enables builds of examples" OFF) + add_subdirectory(taskflow-3.8.0) +endif() diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt index 4113960..80b6e0f 100644 --- a/src/tools/CMakeLists.txt +++ b/src/tools/CMakeLists.txt @@ -22,7 +22,7 @@ add_mnode_dev_executable(mesy_nng_pub_producer) add_mnode_dev_executable(mesy_nng_sub_consumer) add_mnode_dev_executable(mana_auto_replay) -target_link_libraries(mana_auto_replay PRIVATE mana mnode::resources) +target_link_libraries(mana_auto_replay PRIVATE mana mnode::resources Taskflow) add_mnode_dev_executable(mana_nng_client) target_link_libraries(mana_nng_client PRIVATE mana mnode::resources) add_mnode_dev_executable(mana1) diff --git a/src/tools/mana_auto_replay.cc b/src/tools/mana_auto_replay.cc index 12be797..75c5530 100644 --- a/src/tools/mana_auto_replay.cc +++ b/src/tools/mana_auto_replay.cc @@ -41,6 +41,7 @@ #include #include #include +#include #include "internal/argh.h" #include "internal/mana_analysis.h" @@ -545,13 +546,23 @@ int main(int argc, char *argv[]) auto destSink = mana.sink; mana.sink = serverPerfSink.get(); - std::thread replayThread(run_replay); - // FIXME: this is useless when running the client loop blocking like this + // FIXME: clientQuit is useless when running the client loop blocking like this std::atomic clientQuit = false; +#if 0 + std::thread replayThread(run_replay); mana::nng_client_run(clientSocket, destSink, clientQuit); if (replayThread.joinable()) replayThread.join(); - fmt::print("Internal NngServerSink: {}\n", to_string(serverPerfSink->perf())); +#else + tf::Taskflow tf; + tf.emplace(run_replay); + tf::Executor executor; + auto f = executor.run(tf); + mana::nng_client_run(clientSocket, destSink, clientQuit); + f.wait(); + +#endif + // fmt::print("Internalthis NngServerSink: {}\n", to_string(serverPerfSink->perf())); } else {