- NGL_ADD_LIBRARY2: 87 CMakeLists.txt konvertiert für Export-Header Generierung - 44 Export-Header Include-Pfade korrigiert (_export.h) - 81 DDS-Stub-Header generiert (*_dtc.h, *_fts.h, *_dts.h, *_ftc.h) - INGLLogger: Duplikat gelöscht, m_logger Member entfernt, variadische Makros - Q_FUNC_INFO Redefinition behoben (Qt6 definiert bereits) - FATAL_LOG Makro hinzugefügt - InfrastructureManagement DDS-Stubs (ism.hpp, ism_enums.hpp, ism_ftc.h) - FilterManagement DDS-Stubs (flt_ftc.h, flt_dts.h) - AreaEffectSimulation DDS-Stubs (aes.hpp, aes_enums.hpp) - SymbolAppearance Klasse vollständig definiert mit content() Methode - BuildingComponentFilter Klasse definiert mit Copy-Konstruktor - Ftc Factory: nullptr Return (abstract class) - AesFilter Klasse in aes.hpp hinzugefügt - Dtc Klasse in ppm.hpp mit participantChanged Signal - AesType Enum: alle 15 At* Werte definiert - AesEffectState_def: EsReceived hinzugefügt - DataModification Enum: eAdded/eModified/eRemoved - function_reply_object.h → core_types.h Include-Pfad (72 Dateien) - Enum-Class-Streaming Template-Operator in INGLLogger.h - ism_mounting_point.h: QImage → QtGui/QImage, QGuiApplication/QScreen - ism_data_plugin_interface.h: QSet Include, Include-Reihenfolge - QRegExp → QRegularExpression in tpm_js_parser.cpp - .underlying() Aufrufe zu direktem Enum-Vergleich korrigiert - Include-Pfade: aes.hpp in symbol_appearance_settings_impl.h und aes_display_filter_impl.h Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
179 lines
6.1 KiB
C++
Executable File
179 lines
6.1 KiB
C++
Executable File
/**
|
|
* Handler for Frequency Planning Status
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
* Created by Malte Diers, ESCS, 23-01-10
|
|
*/
|
|
|
|
#include "handler_frequency_planning_status.h"
|
|
#include <utility>
|
|
#include "object_frequency_planning_status.h"
|
|
|
|
#include "avm_db.h"
|
|
|
|
namespace AudioVideoManagement
|
|
{
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
static FrequencyPlanningStatus convert(const ModifyFrequencyPlanningStatusRequest &request, const FrequencyPlanningStatus &oldData)
|
|
{
|
|
Q_ASSERT(request.client() == oldData.client());
|
|
|
|
FrequencyPlanningStatus newData(oldData);
|
|
if (!oldData.uuid().empty())
|
|
{
|
|
if (oldData.uuid() != request.uuid())
|
|
WARNING_LOG(getLogger("HandlerFrequencyPlanningStatus")) << "WARNING: Same client has concurrent GetConfigCNR requests.";
|
|
}
|
|
newData.uuid() = request.uuid().empty() ? oldData.uuid() : request.uuid();
|
|
newData.id() = oldData.id();
|
|
if (request.sent().is_set())
|
|
{
|
|
newData.sent() = request.sent().get();
|
|
newData.requester() = request.requester(); // ! Requester is only sent, when data gets sent.
|
|
}
|
|
if (request.received().is_set())
|
|
newData.received() = request.received().get();
|
|
if (request.activated().is_set())
|
|
{
|
|
newData.activated() = request.activated().get();
|
|
newData.requester() = request.requester(); // ! Requester is only sent, when data gets activated.
|
|
}
|
|
newData.isActive() = request.isActive();
|
|
newData.content() = request.content();
|
|
newData.reason() = request.reason();
|
|
return newData;
|
|
}
|
|
|
|
HandlerFrequencyPlanningStatus::HandlerFrequencyPlanningStatus(Interface::Dts *dts, Interface::Fts *fts, DatabaseInterface *db)
|
|
: Interface::Fts::ModifyFrequencyPlanningStatusRequestHandler(nullptr)
|
|
, Interface::Fts::ClearFrequencyPlanningStatusRequestHandler(nullptr)
|
|
, Interface::Fts::RemoveFrequencyPlanningStatusByClientRequestHandler(nullptr)
|
|
, m_dts(dts)
|
|
, m_fts(fts)
|
|
, m_db(db)
|
|
{
|
|
Q_ASSERT(dts);
|
|
Q_ASSERT(fts);
|
|
Q_ASSERT(db);
|
|
m_fts->setModifyFrequencyPlanningStatusRequestHandler(this);
|
|
m_fts->setClearFrequencyPlanningStatusRequestHandler(this);
|
|
m_fts->setRemoveFrequencyPlanningStatusByClientRequestHandler(this);
|
|
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
HandlerFrequencyPlanningStatus::~HandlerFrequencyPlanningStatus()
|
|
{
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
bool HandlerFrequencyPlanningStatus::init()
|
|
{
|
|
QVector<Database::AvmFrequencyPlanningStatus> dataVec;
|
|
// read all HandlerFrequencyPlanningStatus Data from database
|
|
if (!m_db->select(dataVec))
|
|
{
|
|
ERROR_LOG() << "Error reading data from database!";
|
|
return false;
|
|
}
|
|
|
|
// create objects
|
|
for (const Database::AvmFrequencyPlanningStatus &data : std::as_const(dataVec))
|
|
{
|
|
FrequencyPlanningStatus ddsData = ObjectFrequencyPlanningStatus::toDdsData(data);
|
|
ObjectFrequencyPlanningStatus *ifs(new ObjectFrequencyPlanningStatus(m_dts, m_db));
|
|
Core::FunctionReplyObject ret = ifs->createObject(ddsData);
|
|
if (ret.error())
|
|
{
|
|
delete ifs;
|
|
ERROR_LOG() << ret();
|
|
return false;
|
|
}
|
|
m_data.insert(ifs->getData().client(), ifs);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
void HandlerFrequencyPlanningStatus::onModifyFrequencyPlanningStatusRequest(const rti::core::SampleIdentity &cookie,
|
|
const ModifyFrequencyPlanningStatusRequest &request)
|
|
{
|
|
DEBUG_LOG() << "onModifyFrequencyPlanningStatusRequest: " << request;
|
|
auto ret = m_data.contains(request.client()) ? frequencyPlanningStatusModifyRequest(request) : frequencyPlanningStatusCreateRequest(request);
|
|
if (ret.error())
|
|
WARNING_LOG() << ret();
|
|
m_fts->modifyFrequencyPlanningStatusReply(cookie, ret);
|
|
}
|
|
|
|
void HandlerFrequencyPlanningStatus::onClearFrequencyPlanningStatusRequest(const rti::core::SampleIdentity &cookie, const ClearFrequencyPlanningStatusRequest &request)
|
|
{
|
|
Q_UNUSED(request);
|
|
Core::FunctionReplyObject ret;
|
|
for (ObjectFrequencyPlanningStatus *ifs : std::as_const(m_data))
|
|
{
|
|
ret = ifs->clearValues();
|
|
if (ret.error())
|
|
break;
|
|
}
|
|
m_fts->clearFrequencyPlanningStatusReply(cookie, ret);
|
|
}
|
|
|
|
void HandlerFrequencyPlanningStatus::onRemoveFrequencyPlanningStatusByClientRequest(const rti::core::SampleIdentity &cookie, const RemoveFrequencyPlanningStatusByClientRequest &request)
|
|
{
|
|
Core::FunctionReplyObject ret;
|
|
QVector<int> clients;
|
|
for (ObjectFrequencyPlanningStatus *ifs : std::as_const(m_data))
|
|
{
|
|
if (request.client() == 0 || ifs->getData().client() == request.client())
|
|
{
|
|
int client = ifs->getData().client();
|
|
ret = ifs->removeObject();
|
|
if (ret.error())
|
|
ERROR_LOG() << ret();
|
|
else
|
|
clients << client;
|
|
}
|
|
}
|
|
for (int client : std::as_const(clients))
|
|
{
|
|
// delete ObjectVideoReceiver
|
|
delete m_data[client];
|
|
m_data.remove(client);
|
|
}
|
|
|
|
m_fts->removeFrequencyPlanningStatusByClientReply(cookie, ret);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
Core::FunctionReplyObject HandlerFrequencyPlanningStatus::frequencyPlanningStatusModifyRequest(const ModifyFrequencyPlanningStatusRequest &request)
|
|
{
|
|
ObjectFrequencyPlanningStatus *ifs = m_data.value(request.client());
|
|
if (ifs == nullptr)
|
|
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Video Team with id %1 not found")).arg(request.id());
|
|
|
|
FrequencyPlanningStatus ddsData = convert(request, ifs->getData());
|
|
|
|
Core::FunctionReplyObject ret = ifs->updateObject(ddsData);
|
|
return ret;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
Core::FunctionReplyObject HandlerFrequencyPlanningStatus::frequencyPlanningStatusCreateRequest(const ModifyFrequencyPlanningStatusRequest &request)
|
|
{
|
|
ObjectFrequencyPlanningStatus *ifs = new ObjectFrequencyPlanningStatus(m_dts, m_db);
|
|
|
|
Core::FunctionReplyObject ret = ifs->createObjectFromDDS(request);
|
|
|
|
if (ret.error())
|
|
delete ifs;
|
|
else
|
|
m_data.insert(ifs->getData().client(), ifs);
|
|
|
|
return ret;
|
|
}
|
|
|
|
} // Namespace
|