/** * @RDE_HEADER@ * Login Dialog * $Id$ * $HeadURL$ * $Author$ * Created by Chrsitian Roeskens, NLSE, 2018-01-18 */ #include "handler_workstation_logout.h" #include "main_handler.h" #include "dds_handler.h" #include namespace AssetManagement { constexpr int MAX_DATATOPIC_LIFETIME = 10 * 1000; //10 sec HandlerWorkstationLogout::HandlerWorkstationLogout(MainHandler *mainHandler, QObject *parent) : QObject(parent) , Interface::Fts::WorkstationLogoutRequestHandler(mainHandler->dds()->fts()) , m_logger(getLogger("HandlerWorkstationLogout")) , m_mainHandler(mainHandler) { } HandlerWorkstationLogout::~HandlerWorkstationLogout() { qDeleteAll(m_logoutRequestMap); } void HandlerWorkstationLogout::onWorkstationLogoutRequest(const rti::core::SampleIdentity &cookie, const WorkstationLogout &request) { if (!m_logoutRequestMap.contains(request.originatorId())) { int originatorId = request.originatorId(); QTimer *dtLifetimeTimer = new QTimer(this); dtLifetimeTimer->setSingleShot(true); dtLifetimeTimer->start(MAX_DATATOPIC_LIFETIME); connect(dtLifetimeTimer, &QTimer::timeout, this, [this, originatorId]() { m_mainHandler->dds()->dts()->removeWorkstationLogoutByKey(originatorId); delete m_logoutRequestMap.take(originatorId); }); m_logoutRequestMap.insert(originatorId, dtLifetimeTimer); m_mainHandler->dds()->dts()->publish(request); } else { m_logoutRequestMap.value(request.originatorId())->start(MAX_DATATOPIC_LIFETIME); m_mainHandler->dds()->dts()->publish(request); } m_mainHandler->dds()->fts()->workstationLogoutReply(cookie, Core::FunctionReplyObject(request.originatorId())); } bool HandlerWorkstationLogout::init() { return true; } } // namespace AssetManagement