Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+509
@@ -0,0 +1,509 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Custom record/replay functions
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#include "aes_record_replay_plugin_custom.h"
|
||||
|
||||
#include <QElapsedTimer>
|
||||
|
||||
|
||||
static bool OPTIMIZE = true; // GUEZE-3521 "Überarbeitung des Replays zur Performance Steigerung"
|
||||
namespace AreaEffectSimulation {
|
||||
|
||||
RecordReplayPluginCustom::RecordReplayPluginCustom()
|
||||
: m_currentReplayTime(0)
|
||||
{
|
||||
}
|
||||
|
||||
RecordReplayPluginCustom::~RecordReplayPluginCustom()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool RecordReplayPluginCustom::initDts(const std::shared_ptr<DDSConnector::DdsConnector> &ddsConnector, int exerciseId, bool bCanHandleSchemas, NSqlQuery &query)
|
||||
{
|
||||
RecordReplayPlugin::initDts(ddsConnector, exerciseId, bCanHandleSchemas, query);
|
||||
m_ddsConnector = ddsConnector;
|
||||
m_ddsDts = AreaEffectSimulation::Interface::Dts::create(m_ddsConnector);
|
||||
m_ddsDts->enableAll();
|
||||
//const qint64 startTime = time(nullptr) * 1000LL;
|
||||
DEBUG_LOG(m_logger) << "RecordReplayPluginCustom::initDts successful";
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool RecordReplayPluginCustom::setReplayStartTime(NSqlQuery &q, qint64 startTime)
|
||||
{
|
||||
|
||||
QElapsedTimer timer;
|
||||
QElapsedTimer timer2;
|
||||
timer2.start();
|
||||
|
||||
INFO_LOG(m_logger) << "setReplayStartTime " << startTime;
|
||||
m_currentReplayTime = 0;
|
||||
timer.start();
|
||||
|
||||
if (!readTrajectoryTimeAwareAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readTrajectoryTimeAwareAt " << startTime << " DONE";
|
||||
|
||||
timer.restart();
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readTrajectoryTimeAwareAt " << startTime << " before: " << m_trajectoryTimeAwareMap.count();
|
||||
if (OPTIMIZE)
|
||||
{
|
||||
auto copyTW = m_trajectoryTimeAwareMap;
|
||||
for (const auto &key : m_trajectoryTimeAwareMap.keys())
|
||||
{
|
||||
for (const auto &valie : copyTW.values(key))
|
||||
{
|
||||
if (valie.trajectoryStartTime() < startTime - 210*1000)
|
||||
{
|
||||
m_trajectoryTimeAwareMap.remove(key, valie);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readTrajectoryTimeAwareAt " << startTime << " after: " << m_trajectoryTimeAwareMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
|
||||
|
||||
timer.restart();
|
||||
if (!readAirSupportImpactAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readAirSupportImpactAt " << startTime << " DONE";
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readAirSupportImpactAt " << startTime << " before: " << m_airSupportImpactMap.count();
|
||||
removeOld(m_airSupportImpactMap, startTime);
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readAirSupportImpactAt " << startTime << " after: " << m_airSupportImpactMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
if (!readBCContaminationAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readBCContaminationAt " << startTime << " DONE";
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readBCContaminationAt " << startTime << " before: " << m_bCContaminationMap.count();
|
||||
removeOld(m_bCContaminationMap, startTime);
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readBCContaminationAt " << startTime << " after: " << m_bCContaminationMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
if (!readBoobyTrapAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readBoobyTrapAt " << startTime << " DONE";
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readBoobyTrapAt " << startTime << " before: " << m_boobyTrapMap.count();
|
||||
removeOld(m_boobyTrapMap, startTime);
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readBoobyTrapAt " << startTime << " after: " << m_boobyTrapMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
if (!readBorderlineAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readBorderlineAt " << startTime << " DONE";
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readBorderlineAt " << startTime << " before: " << m_borderlineMap.count();
|
||||
removeOld(m_borderlineMap, startTime);
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readBorderlineAt " << startTime << " after: " << m_borderlineMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
|
||||
|
||||
if (!readChargeAdministrationAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readDynamicParticipantDataAt " << startTime << " DONE";
|
||||
|
||||
|
||||
timer.restart();
|
||||
if (!readDangerAreaAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readDangerAreaAt " << startTime << " DONE";
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readDangerAreaAt " << startTime << " before: " << m_dangerAreaMap.count();
|
||||
removeOld(m_dangerAreaMap, startTime);
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readDangerAreaAt " << startTime << " after: " << m_dangerAreaMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
if (!readDusMineStateAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readDynamicParticipantDataAt " << startTime << " DONE";
|
||||
|
||||
if (!readDusSingleMineAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readDynamicParticipantDataAt " << startTime << " DONE";
|
||||
|
||||
timer.restart();
|
||||
if (!readExplosionAreaAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readExplosionAreaAt " << startTime << " DONE";
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readExplosionAreaAt " << startTime << " before: " << m_explosionAreaMap.count();
|
||||
removeOld(m_explosionAreaMap, startTime);
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readExplosionAreaAt " << startTime << " after: " << m_explosionAreaMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
|
||||
if (!readExplosionClusterAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readExplosionClusterAt " << startTime << " DONE";
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readExplosionClusterAt " << startTime << " before: " << m_explosionClusterMap.count();
|
||||
removeOld(m_explosionClusterMap, startTime);
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readExplosionClusterAt " << startTime << " after: " << m_explosionClusterMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
if (!readExplosionSingleAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readExplosionSingleAt " << startTime << " DONE";
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readExplosionSingleAt " << startTime << " before: " << m_explosionSingleMap.count();
|
||||
removeOld(m_explosionSingleMap, startTime);
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readExplosionSingleAt " << startTime << " after: " << m_explosionSingleMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
if (!readFunctionalAreaAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readDynamicParticipantDataAt " << startTime << " DONE";
|
||||
|
||||
if (!readGasPipeAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readGasPipeAt " << startTime << " DONE";
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readGasPipeAt " << startTime << " before: " << m_gasPipeMap.count();
|
||||
removeOld(m_gasPipeMap, startTime);
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readGasPipeAt " << startTime << " after: " << m_gasPipeMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
if (!readMineAreaAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readMineAreaAt " << startTime << " DONE";
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readMineAreaAt " << startTime << " before: " << m_mineAreaMap.count();
|
||||
removeOld(m_mineAreaMap, startTime);
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readMineAreaAt " << startTime << " after: " << m_mineAreaMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
|
||||
if (!readMineCorridorAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readMineCorridorAt " << startTime << " DONE";
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readMineCorridorAt " << startTime << " before: " << m_mineCorridorMap.count();
|
||||
removeOld(m_mineCorridorMap, startTime);
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readMineCorridorAt " << startTime << " after: " << m_mineCorridorMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
if (!readNContaminationAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readNContaminationAt " << startTime << " DONE";
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readNContaminationAt " << startTime << " before: " << m_nContaminationMap.count();
|
||||
removeOld(m_nContaminationMap, startTime);
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readNContaminationAt " << startTime << " after: " << m_nContaminationMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
|
||||
if (!readOffRouteMineAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readOffRouteMineAt " << startTime << " DONE";
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readOffRouteMineAt " << startTime << " before: " << m_offRouteMineMap.count();
|
||||
removeOld(m_offRouteMineMap, startTime);
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readOffRouteMineAt " << startTime << " after: " << m_offRouteMineMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
|
||||
if (!readReconAreaAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readDynamicParticipantDataAt " << startTime << " DONE";
|
||||
|
||||
if (!readTechnicalAreaAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readTechnicalAreaAt " << startTime << " DONE";
|
||||
|
||||
if (!readEffectClusterAt(q, startTime))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "setReplayStartTime-readEffectClusterAt " << startTime << " failed";
|
||||
return false;
|
||||
}
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readEffectClusterAt " << startTime << " DONE";
|
||||
|
||||
if (!readChargeEffectAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readChargeEffectAt " << startTime << " DONE";
|
||||
|
||||
|
||||
timer.restart();
|
||||
if (!readTriggeredImpactsAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readTriggeredImpactsAt " << startTime << " DONE";
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readTriggeredImpactsAt " << startTime << " before: " << m_triggeredImpactsMap.count();
|
||||
if (OPTIMIZE)
|
||||
{
|
||||
auto copyTI = m_triggeredImpactsMap;
|
||||
for (const auto &key : m_triggeredImpactsMap.keys())
|
||||
{
|
||||
for (const auto &valie : copyTI.values(key))
|
||||
{
|
||||
if (valie.sampleTime() < startTime - 210*1000)
|
||||
m_triggeredImpactsMap.remove(key, valie);
|
||||
}
|
||||
}
|
||||
}
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readTriggeredImpactsAt " << startTime << " after: " << m_triggeredImpactsMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
//take aes item view last
|
||||
timer.restart();
|
||||
if (!readAesItemViewAt(q, startTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
//manual remove_
|
||||
|
||||
|
||||
timer.restart();
|
||||
if (!readEffectsAt(q, startTime)) return false;
|
||||
INFO_LOG(m_logger) << "setReplayStartTime-readEffectsAt " << startTime << " DONE";
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
|
||||
timer.restart();
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readEffectsAt " << startTime << " before: " << m_effectsMap.count();
|
||||
if (OPTIMIZE)
|
||||
{
|
||||
//find missing aes item vies?!
|
||||
auto copy = m_effectsMap;
|
||||
for (const auto &key : copy.keys())
|
||||
{
|
||||
for (const auto &valie : copy.values(key))
|
||||
{
|
||||
if( m_explosionClusterKeys.find(valie.aesItemId()) != m_explosionClusterKeys.end())
|
||||
{
|
||||
m_effectsMap.remove(key, valie);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readEffectsAt " << startTime << " after: " << m_effectsMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
timer.restart();
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readAesItemViewAt " << startTime << " before: " << m_aesItemViewMap.count();
|
||||
if (OPTIMIZE)
|
||||
{
|
||||
// find missing aes item views?!
|
||||
auto copy = m_aesItemViewMap;
|
||||
for (const auto &key : m_aesItemViewMap.keys())
|
||||
{
|
||||
for (const auto &value : copy.values(key))
|
||||
{
|
||||
if (value.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsCreated
|
||||
|| value.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsFired
|
||||
|| value.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsReceived
|
||||
|| value.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsPrepared
|
||||
|| value.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsActivated
|
||||
)
|
||||
continue;
|
||||
|
||||
// check regarding _Explosion_Cluster
|
||||
{
|
||||
static QVector<AesType_def::type> relavantAesTypeIds = {AesType_def::AtExplosionClusterGunToTargetLine, AesType_def::AtExplosionClusterSingleTrajectory};
|
||||
if (relavantAesTypeIds.contains(value.aesTypeId().underlying()))
|
||||
{
|
||||
if (m_explosionClusterKeys.find(value.aesItemId()) != m_explosionClusterKeys.end() ) //contains not available until cpp 20
|
||||
continue;
|
||||
}
|
||||
}
|
||||
// E01562-E343 EffectCluster: GunToTargetLines fehlen im Replay&Snapshot
|
||||
{
|
||||
static QVector<AesType_def::type> relavantAesTypeIds = {AesType_def::AtEffectClusterGunToTargetLine, AesType_def::AtEffectClusterGunToTargetLine};
|
||||
if (relavantAesTypeIds.contains(value.aesTypeId().underlying()))
|
||||
{
|
||||
if (m_effectClusterKeys.find(value.aesItemId()) != m_effectClusterKeys.end() ) //contains not available until cpp 20
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (value.effectStateId() == AesEffectState_def::EsRemoved || value.effectStart() < startTime - 210*1000)
|
||||
{
|
||||
m_aesItemViewMap.remove(key, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
DEBUG_LOG(m_logger) << "setReplayStartTime-readAesItemViewAt " << startTime << " after: " << m_aesItemViewMap.count();
|
||||
DEBUG_LOG(m_logger) << "took " << timer.elapsed();
|
||||
|
||||
DEBUG_LOG(m_logger) << "done db work took " << timer2.elapsed();
|
||||
return true;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void RecordReplayPluginCustom::removeOld(QMultiMap<long long, T> &map, qint64 desiredTime)
|
||||
{
|
||||
if (!OPTIMIZE)
|
||||
return;
|
||||
|
||||
auto copy = map;
|
||||
for (const auto &item : copy.keys())
|
||||
{
|
||||
for (const auto &inner : map.values(item))
|
||||
{
|
||||
// Remove delted ones
|
||||
if (inner.isDeleted())
|
||||
{
|
||||
map.remove(item, inner);
|
||||
continue;
|
||||
}
|
||||
// keep planned
|
||||
if (!inner.effectStart().is_set())
|
||||
continue;
|
||||
// Remove to old ones
|
||||
if (inner.effectStart().get()+inner.effectDuration() < desiredTime - 210*1000 )
|
||||
map.remove(item, inner);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool RecordReplayPluginCustom::ddsTopicsFromDatabase(NSqlQuery &q, qint64 fromTime, qint64 toTime)
|
||||
{
|
||||
INFO_LOG(m_logger) << "ddsTopicsFromDatabase " << fromTime << " to " << toTime;
|
||||
// if (!readParticipant(q, fromTime, toTime)) return false;
|
||||
bool ret = RecordReplayPlugin::ddsTopicsFromDatabase(q, fromTime, toTime);
|
||||
DEBUG_LOG(m_logger) << "ddsTopicsFromDatabase ret: " << ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool RecordReplayPluginCustom::publishData(qint64 desiredTime)
|
||||
{
|
||||
INFO_LOG(m_logger) << "publishData " << desiredTime;
|
||||
m_currentReplayTime = desiredTime;
|
||||
|
||||
|
||||
QElapsedTimer timer;
|
||||
QElapsedTimer timer2;
|
||||
timer2.start();
|
||||
|
||||
timer.start();
|
||||
DEBUG_LOG(m_logger) << "dispose map =" << m_aesItemViewDisposedMap.size();
|
||||
DEBUG_LOG(m_logger) << "send map =" << m_aesItemViewMap.size();
|
||||
if (!publishAesItemView(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishAesItemView took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishAirSupportImpact(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishAirSupportImpact took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishBCContamination(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishBCContamination took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishBoobyTrap(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishBoobyTrap took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishBorderline(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishBorderline took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishChargeAdministration(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishChargeAdministration took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishDangerArea(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishDangerArea took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishDusMineState(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishDusMineState took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishDusSingleMine(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishDusSingleMine took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishEffects(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishEffects took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishExplosionArea(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishExplosionArea took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishExplosionCluster(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishExplosionCluster took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishExplosionSingle(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishExplosionSingle took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishFunctionalArea(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishFunctionalArea took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishGasPipe(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishGasPipe took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishMineArea(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishMineArea took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishMineCorridor(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishMineCorridor took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishNContamination(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishNContamination took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishOffRouteMine(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishOffRouteMine took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishReconArea(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishReconArea took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishTechnicalArea(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishTechnicalArea took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishEffectCluster(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishEffectCluster took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishChargeEffect(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishtChargeEffect took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishTrajectoryTimeAware(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishTrajectoryTimeAware took " << timer.elapsed();
|
||||
timer.restart();
|
||||
if (!publishTriggeredImpacts(desiredTime)) return false;
|
||||
DEBUG_LOG(m_logger) << "publishTriggeredImpacts took " << timer.elapsed();
|
||||
timer.restart();
|
||||
|
||||
//bool ret = RecordReplayPlugin::publishData(desiredTime);
|
||||
//DEBUG_LOG(m_logger) << "publish ret: " << ret;
|
||||
|
||||
DEBUG_LOG(m_logger) << "publish totally took " << timer2.elapsed();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool RecordReplayPluginCustom::waitForAsyncOperations(qint64 desiredTime)
|
||||
{
|
||||
Q_UNUSED(desiredTime);
|
||||
|
||||
bool ret = RecordReplayPlugin::waitForAsyncOperations(desiredTime);
|
||||
DEBUG_LOG(m_logger) << "waitForAsyncOperations ret: " << ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
void RecordReplayPluginCustom::clearData()
|
||||
{
|
||||
RecordReplayPlugin::clearData();
|
||||
}
|
||||
|
||||
|
||||
} // namespace AreaEffectSimulation
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Custom record/replay functions
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
#pragma once
|
||||
#include <AreaEffectSimulation/aes_record_replay_plugin.h>
|
||||
#include <AreaEffectSimulation/aes_dts.h>
|
||||
// fixup include path on 42.3 -> missing interface
|
||||
#include <../../Common/PluginInterfaces/record_replay_plugin.h>
|
||||
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
class AESRECORDREPLAYPLUGIN_EXPORT RecordReplayPluginCustom final : public RecordReplayPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID "special:3:recordreplay.aes")
|
||||
Q_INTERFACES(RecordReplay::RecordReplayPlugin)
|
||||
|
||||
public:
|
||||
RecordReplayPluginCustom();
|
||||
~RecordReplayPluginCustom();
|
||||
|
||||
bool initDts(const std::shared_ptr<DDSConnector::DdsConnector> &ddsConnector,
|
||||
int exerciseId,
|
||||
bool bCanHandleSchemas,
|
||||
NSqlQuery &query) override;
|
||||
bool setReplayStartTime(NSqlQuery &q, qint64 startTime) override;
|
||||
bool ddsTopicsFromDatabase(NSqlQuery &q, qint64 fromTime, qint64 toTime) override;
|
||||
bool publishData(qint64 desiredTime) override;
|
||||
bool waitForAsyncOperations(qint64 desiredTime) override;
|
||||
void clearData() override;
|
||||
|
||||
private:
|
||||
template<typename T>
|
||||
void removeOld(QMultiMap<long long int , T> &map, qint64 desiredTime);
|
||||
|
||||
|
||||
private:
|
||||
std::shared_ptr<AreaEffectSimulation::Interface::Dts> m_ddsDts;
|
||||
qint64 m_currentReplayTime;
|
||||
|
||||
};
|
||||
|
||||
} // namespace AreaEffectSimulation
|
||||
Reference in new issue
Block a user