Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
@@ -0,0 +1,193 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* AvsSessionContext
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Christian Fröbel, SLSE, 2017-08-03
|
||||
*/
|
||||
|
||||
#include "avs_session_context.h"
|
||||
#include "avm_exercise_context.h"
|
||||
#include "operator_settings_observer.h"
|
||||
#include "rt_profile_observer.h"
|
||||
#include <AudioVideoManagement/avs_menus.h>
|
||||
#include <AudioVideoManagement/ava_comm.h>
|
||||
#include <AudioVideoManagement/ava_control.h>
|
||||
#include <AudioVideoManagement/ava_session.h>
|
||||
#include <AudioVideoManagement/ava_state.h>
|
||||
#include <AudioVideoManagement/vd_comm.h>
|
||||
#include <AudioVideoManagement/vd_control.h>
|
||||
#include <AudioVideoManagement/vd_session.h>
|
||||
#include <AudioVideoManagement/avs_dialog.h>
|
||||
#include <AudioVideoManagement/stream_name_mapping_to_ava.h>
|
||||
#include <AudioVideoManagement/Shared/avs_app.h>
|
||||
#include <AudioVideoManagement/Shared/playback_app.h>
|
||||
#include <AudioVideoManagement/Shared/plugin_settings.h>
|
||||
#include <OperatorManagement/opm_dtc.h>
|
||||
#include <OperatorManagement/opm.hpp>
|
||||
#include <InfrastructureManagement/ism_dtc.h>
|
||||
#include <InfrastructureManagement/ism.hpp>
|
||||
|
||||
#include <nglsettings/nglsettings_connections.h>
|
||||
#include <LtsUtilsSettings/settings.h>
|
||||
#include <QObject>
|
||||
#include <QtGlobal>
|
||||
|
||||
|
||||
namespace AudioVideoManagement
|
||||
{
|
||||
|
||||
/// AvsSessionContext
|
||||
struct AvsSessionContext::Composite
|
||||
{
|
||||
Composite(int exerciseId_, int operatorId, const QString &langCode, AvaGuiStyle guiStyle, const AvmExerciseContextHandle &exerciseContextHandle)
|
||||
: exerciseId(exerciseId_)
|
||||
, operator_(exerciseContextHandle.opmDtc()->user(operatorId))
|
||||
, audioPrioObserver(exerciseId_, operatorId, exerciseContextHandle.opmDtc(), exerciseContextHandle.exmDtc())
|
||||
, avaComm(NGL::Connections::hostName(NGL::Connections::eConnection::AVS_WORKSTATION), NGL::Connections::port(NGL::Connections::eConnection::AVS_WORKSTATION))
|
||||
, avaControl(&avaComm, exerciseContextHandle.streamNameMapping(), PluginSettings::instance()->avaTimeout())
|
||||
, avaSession(&avaControl, exerciseId, QString::fromStdString(operator_.name()), langCode, operator_.audioChannelPriority(), audioPrioObserver.timezone(), guiStyle, PluginSettings::instance()->avaKeepAliveEnabled())
|
||||
, avaState(&avaSession)
|
||||
, streamNameMappingToAva(&avaSession, exerciseContextHandle.streamNameMapping())
|
||||
, avsMenus(&avaSession, exerciseContextHandle.dtc().get(), exerciseContextHandle.ismDtc(), avaState.rtState())
|
||||
, rtProfileObserver(exerciseContextHandle.dtc().get(), &avaSession, avaState.rtState(), exerciseId_, operatorId)
|
||||
, vdComm(NGL::Connections::hostName(NGL::Connections::eConnection::AVS_WORKSTATION_VD), NGL::Connections::port(NGL::Connections::eConnection::AVS_WORKSTATION_VD))
|
||||
, vdControl(&vdComm, PluginSettings::instance()->vdTimeout())
|
||||
, vdSession(&vdControl, exerciseId, PluginSettings::instance()->vdKeepAliveEnabled())
|
||||
, liveVideoApp(AvsDialog::VIDEO_1, &avaControl)
|
||||
, videoPlaybackApp(AvsDialog::VIDEO_PLAYBACK, &avaControl, PlaybackApp::AppType::Normal)
|
||||
, audioPlaybackApp(AvsDialog::AUDIO_PLAYBACK, &avaControl, PlaybackApp::AppType::AlwaysHidden)
|
||||
, videoPresentationApp(AvsDialog::VIDEO_PRESENTATION, &avaControl, PlaybackApp::AppType::AutoHide)
|
||||
, audioPresentationApp(AvsDialog::AUDIO_PRESENTATION, &avaControl, PlaybackApp::AppType::AlwaysHidden)
|
||||
{
|
||||
QObject::connect(&audioPrioObserver, &OperatorSettingsObserver::audioPrioChanged, &avaSession, &AvaSession::onAudioPrioChanged);
|
||||
QObject::connect(&audioPrioObserver, &OperatorSettingsObserver::timezoneChanged, &avaSession, &AvaSession::onTimezoneChanged);
|
||||
|
||||
avaComm.start();
|
||||
vdComm.start();
|
||||
}
|
||||
|
||||
int exerciseId;
|
||||
OperatorManagement::User operator_;
|
||||
OperatorSettingsObserver audioPrioObserver;
|
||||
AvaComm avaComm;
|
||||
AvaControl avaControl;
|
||||
AvaSession avaSession;
|
||||
AvaState avaState;
|
||||
StreamNameMappingToAva streamNameMappingToAva;
|
||||
AvsMenus avsMenus;
|
||||
RtProfileObserver rtProfileObserver;
|
||||
VdComm vdComm;
|
||||
VdControl vdControl;
|
||||
VdSession vdSession;
|
||||
AvsApp liveVideoApp;
|
||||
PlaybackApp videoPlaybackApp;
|
||||
PlaybackApp audioPlaybackApp;
|
||||
PlaybackApp videoPresentationApp;
|
||||
PlaybackApp audioPresentationApp;
|
||||
};
|
||||
|
||||
|
||||
AvsSessionContext::AvsSessionContext() = default;
|
||||
|
||||
AvsSessionContext::~AvsSessionContext()
|
||||
{
|
||||
//Q_ASSERT(m_refCount == 0);
|
||||
}
|
||||
|
||||
bool AvsSessionContext::canAcquire(int exerciseId) const
|
||||
{
|
||||
Q_ASSERT(exerciseId > 0);
|
||||
if (!m_composite)
|
||||
return true;
|
||||
return exerciseId == m_composite->exerciseId;
|
||||
}
|
||||
|
||||
AvsSessionContext::Composite *AvsSessionContext::acquire(int exerciseId, int operatorId, const QString &langCode, AvaGuiStyle guiStyle, const AvmExerciseContextHandle &exerciseContextHandle)
|
||||
{
|
||||
Q_ASSERT(exerciseId > 0);
|
||||
|
||||
if (m_refCount == 0)
|
||||
m_composite.reset(new Composite(exerciseId, operatorId, langCode, guiStyle, exerciseContextHandle));
|
||||
else
|
||||
Q_ASSERT(exerciseId == m_composite->exerciseId);
|
||||
|
||||
++m_refCount;
|
||||
return m_composite.get();
|
||||
}
|
||||
|
||||
void AvsSessionContext::release(Composite *composite)
|
||||
{
|
||||
Q_ASSERT(composite);
|
||||
Q_ASSERT(composite == m_composite.get());
|
||||
--m_refCount;
|
||||
if (m_refCount == 0)
|
||||
m_composite.reset();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// AvsSessionContextHandle
|
||||
AvsSessionContextHandle::AvsSessionContextHandle(/*LtsSession::LtsSession *session, */AvsSessionContext *context, int exerciseId, int operatorId, const QString &langCode, AvaGuiStyle guiStyle, const AvmExerciseContextHandle &exerciseContextHandle)
|
||||
: m_composite(context->acquire(exerciseId, operatorId, langCode, guiStyle, exerciseContextHandle), [context](AvsSessionContext::Composite *composite) { context->release(composite); })
|
||||
{
|
||||
Q_ASSERT(context);
|
||||
Q_ASSERT(m_composite);
|
||||
}
|
||||
|
||||
AvaSession *AvsSessionContextHandle::avaSession() const
|
||||
{
|
||||
Q_ASSERT(m_composite);
|
||||
return &m_composite->avaSession;
|
||||
}
|
||||
|
||||
AvaState *AvsSessionContextHandle::avaState() const
|
||||
{
|
||||
Q_ASSERT(m_composite);
|
||||
return &m_composite->avaState;
|
||||
}
|
||||
|
||||
AvsMenus *AvsSessionContextHandle::menus() const
|
||||
{
|
||||
Q_ASSERT(m_composite);
|
||||
return &m_composite->avsMenus;
|
||||
}
|
||||
|
||||
VdSession *AvsSessionContextHandle::vdSession() const
|
||||
{
|
||||
Q_ASSERT(m_composite);
|
||||
return &m_composite->vdSession;
|
||||
}
|
||||
|
||||
AvsApp *AvsSessionContextHandle::liveVideoApp() const
|
||||
{
|
||||
Q_ASSERT(m_composite);
|
||||
return &m_composite->liveVideoApp;
|
||||
}
|
||||
|
||||
PlaybackApp *AvsSessionContextHandle::videoPlaybackApp() const
|
||||
{
|
||||
Q_ASSERT(m_composite);
|
||||
return &m_composite->videoPlaybackApp;
|
||||
}
|
||||
|
||||
PlaybackApp *AvsSessionContextHandle::audioPlaybackApp() const
|
||||
{
|
||||
Q_ASSERT(m_composite);
|
||||
return &m_composite->audioPlaybackApp;
|
||||
}
|
||||
|
||||
PlaybackApp *AvsSessionContextHandle::videoPresentationApp() const
|
||||
{
|
||||
Q_ASSERT(m_composite);
|
||||
return &m_composite->videoPresentationApp;
|
||||
}
|
||||
|
||||
PlaybackApp *AvsSessionContextHandle::audioPresentationApp() const
|
||||
{
|
||||
Q_ASSERT(m_composite);
|
||||
return &m_composite->audioPresentationApp;
|
||||
}
|
||||
|
||||
} // namespace AudioVideoManagement
|
||||
Reference in new issue
Block a user