Files
qt5-legatus-legacy/Lts/Services/AudioVideoManagement/vd_session.cpp
T
2026-08-13 18:33:10 +02:00

59 lines
1.3 KiB
C++
Executable File

/**
* @RDE_HEADER@
* VdSession
* $Id$
* $HeadURL$
* $Author$
* Created by Astrid Müller, SGAS, 2018-02-26
*/
#include "vd_session.h"
#include "vd_control.h"
#include "ivd_comm.h"
namespace AudioVideoManagement
{
VdSession::VdSession(VdControl *ctrl, int exerciseId, bool keepAliveEnabled)
: m_ctrl(ctrl)
, m_exerciseId(exerciseId)
, m_keepAliveEnabled(keepAliveEnabled)
, m_logger(getLogger("AvaSession"))
{
Q_ASSERT(ctrl);
m_keepAliveTimer.setInterval(std::chrono::milliseconds(5000).count());
m_keepAliveTimer.setSingleShot(true);
connect(m_ctrl->comm(), &IVdComm::connected, this, &VdSession::onConnected);
connect(m_ctrl->comm(), &IVdComm::disconnected, this, &VdSession::onDisconnected);
connect(&m_keepAliveTimer, &QTimer::timeout, this, &VdSession::onKeepAliveTimerElapsed);
}
void VdSession::onConnected()
{
m_ctrl->switchContext(m_exerciseId);
m_established = true;
if (m_keepAliveEnabled)
m_keepAliveTimer.start();
DEBUG_LOG(m_logger) << "session established";
emit sessionEstablished();
}
void VdSession::onDisconnected()
{
m_keepAliveTimer.stop();
m_established = false;
DEBUG_LOG(m_logger) << "disconnected";
emit disconnected();
}
void VdSession::onKeepAliveTimerElapsed()
{
m_ctrl->keepAlive();
m_keepAliveTimer.start();
}
} // namespace AudioVideoManagement