Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
@@ -0,0 +1,112 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* StreamNameMappingPublisher
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Christian Fröbel, NLSE, 2018-03-13
|
||||
*/
|
||||
|
||||
#include "stream_name_mapping_publisher.h"
|
||||
#include "audio_video_handler_impl.h"
|
||||
#include <AudioVideoManagement/avm_dts.h>
|
||||
#include <InfrastructureManagement/ism_dtc.h>
|
||||
#include <InfrastructureManagement/ism.hpp>
|
||||
#include <LtsUtilsCore/data_modification_enum.h>
|
||||
#include <QtGlobal>
|
||||
#include <string>
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
bool isMountingPointOfInterest(const InfrastructureManagement::StructureElement &se)
|
||||
{
|
||||
if (se.structureElementTypeId() != InfrastructureManagement::StructureElementType::MountingPoint)
|
||||
return false;
|
||||
|
||||
if (se.mountingPointTypeId() == InfrastructureManagement::MountingPointType::IndoorCamera ||
|
||||
se.mountingPointTypeId() == InfrastructureManagement::MountingPointType::OutdoorCamera ||
|
||||
se.mountingPointTypeId() == InfrastructureManagement::MountingPointType::AnnouncementUnit)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string displayName(const InfrastructureManagement::StructureElement &mp)
|
||||
{
|
||||
Q_ASSERT(isMountingPointOfInterest(mp));
|
||||
if (mp.displayName().size() > 0)
|
||||
return mp.displayName();
|
||||
|
||||
return AudioVideoManagement::AudioVideoHandlerImpl::internalStreamName(mp.id()).toStdString();
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
namespace AudioVideoManagement
|
||||
{
|
||||
|
||||
StreamNameMappingPublisher::StreamNameMappingPublisher(InfrastructureManagement::Interface::Dtc *ismDtc, Interface::Dts *dts)
|
||||
: m_ismDtc(ismDtc)
|
||||
, m_dts(dts)
|
||||
{
|
||||
Q_ASSERT(ismDtc);
|
||||
Q_ASSERT(dts);
|
||||
|
||||
QObject::connect(m_ismDtc, &InfrastructureManagement::Interface::Dtc::mainStructureElementChanged, this, &StreamNameMappingPublisher::onMainStructureElementChanged);
|
||||
}
|
||||
|
||||
void StreamNameMappingPublisher::onMainStructureElementChanged(const InfrastructureManagement::MainStructureElement &mse, DataModification modType)
|
||||
{
|
||||
switch (modType)
|
||||
{
|
||||
case DataModification::eAdded:
|
||||
Q_FALLTHROUGH();
|
||||
case DataModification::eModified:
|
||||
onMseChanged(mse);
|
||||
return;
|
||||
|
||||
case DataModification::eRemoved:
|
||||
onMseRemoved(mse);
|
||||
return;
|
||||
|
||||
default:
|
||||
Q_ASSERT(false);
|
||||
}
|
||||
}
|
||||
|
||||
void StreamNameMappingPublisher::onMseChanged(const InfrastructureManagement::MainStructureElement &mse)
|
||||
{
|
||||
const auto &structureElements = mse.elements();
|
||||
for (auto &se : structureElements)
|
||||
if (isMountingPointOfInterest(se))
|
||||
publish(se);
|
||||
}
|
||||
|
||||
void StreamNameMappingPublisher::onMseRemoved(const InfrastructureManagement::MainStructureElement &mse)
|
||||
{
|
||||
const auto &structureElements = mse.elements();
|
||||
for (auto &se : structureElements)
|
||||
if (isMountingPointOfInterest(se))
|
||||
remove(se);
|
||||
}
|
||||
|
||||
void StreamNameMappingPublisher::publish(const InfrastructureManagement::StructureElement &mountingPoint)
|
||||
{
|
||||
StreamName streamName;
|
||||
streamName.mountingPointId(mountingPoint.id());
|
||||
streamName.internalName(AudioVideoHandlerImpl::internalStreamName(mountingPoint.id()).toStdString());
|
||||
streamName.displayName(displayName(mountingPoint));
|
||||
|
||||
if (m_streamNames[mountingPoint.id()] != streamName)
|
||||
m_dts->publish(streamName);
|
||||
m_streamNames[mountingPoint.id()] = streamName;
|
||||
}
|
||||
|
||||
void StreamNameMappingPublisher::remove(const InfrastructureManagement::StructureElement &mountingPoint)
|
||||
{
|
||||
m_dts->removeStreamNameByKey(mountingPoint.id());
|
||||
}
|
||||
|
||||
} // namespace AudioVideoManagement
|
||||
Reference in new issue
Block a user