#include "topic_lock_master.h" #include namespace Core { TopicLockMaster::TopicLockMaster(const std::shared_ptr &ddsConnector) : QObject(nullptr) , m_coreDtc(nullptr) { init(ddsConnector); } TopicLockMaster::~TopicLockMaster() { m_coreDtc.reset(); } bool TopicLockMaster::init(const std::shared_ptr &ddsConnector) { if (!ddsConnector) return false; m_coreDtc = Core::Interface::Dtc::create(ddsConnector); if (!m_coreDtc) return false; m_coreDtc->enableAll(); m_coreDtc->lockedEntitys([this] (const LockedEntity &data) { m_lockedEntitys << key(data.entityId(), data.exerciseId(), QString::fromStdString(data.entityTypeName())); }); connect(m_coreDtc.get(), &Interface::Dtc::lockedEntityChanged, this, [this] (const LockedEntity &data, DataModification modType) { key k(data.entityId(), data.exerciseId(), QString::fromStdString(data.entityTypeName())); if (modType == DataModification::eAdded) m_lockedEntitys << k; else if (modType == DataModification::eRemoved) m_lockedEntitys.remove(k); } ); return true; } }