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

62 lines
1.2 KiB
C++
Executable File

/**
* @RDE_HEADER@
* KeepAlive
* $Id$
* $HeadURL$
* $Author$
* Created by Christian Fröbel, NLSE, 2018-04-10
*/
#include "keep_alive.h"
#include "iava_comm.h"
#include "iava_command_done_observer.h"
#include "ivd_comm.h"
#include "ivd_command_done_observer.h"
namespace AudioVideoManagement
{
namespace detail
{
template<class Comm, class DoneObserver>
KeepAlive<Comm, DoneObserver>::KeepAlive(Comm *comm, DoneObserver *doneObserver)
: m_comm(comm)
, m_observer(doneObserver)
{
Q_ASSERT(comm);
Q_ASSERT(doneObserver);
}
template<class Comm, class DoneObserver>
void KeepAlive<Comm, DoneObserver>::send()
{
connect(m_comm, &Comm::keepAliveReceived, this, &KeepAlive::onKeepAliveReceived);
m_comm->keepAlive();
}
template<class Comm, class DoneObserver>
void KeepAlive<Comm, DoneObserver>::onKeepAliveReceived()
{
done();
}
template<class Comm, class DoneObserver>
void KeepAlive<Comm, DoneObserver>::done()
{
m_comm->disconnect(this);
m_observer->done(this);
}
/**
* Explicit template instantiations.
*/
///@{
template class KeepAlive<IAvaComm, IAvaCommandDoneObserver>;
template class KeepAlive<IVdComm, IVdCommandDoneObserver>;
///@}
} // namespace detail
} // namespace AudioVideoManagement