DDS plugin: Do not block the DDS KeyValue callback

This commit is contained in:
Dennis Klein
2019-09-13 14:53:42 +02:00
parent fa394194e8
commit e3890a4033
3 changed files with 74 additions and 51 deletions

View File

@@ -11,6 +11,9 @@
#include <DDS/dds_env_prop.h>
#include <DDS/dds_intercom.h>
#include <boost/asio/executor.hpp>
#include <boost/asio/executor_work_guard.hpp>
#include <boost/asio/io_context.hpp>
#include <cassert>
#include <chrono>
#include <condition_variable>
@@ -172,6 +175,10 @@ class DDS : public Plugin
bool fUpdatesAllowed;
std::mutex fUpdateMutex;
std::condition_variable fUpdateCondition;
std::thread fWorkerThread;
boost::asio::io_context fWorkerQueue;
boost::asio::executor_work_guard<boost::asio::executor> fWorkGuard;
};
Plugin::ProgOptions DDSProgramOptions()