Ref T129, use map of CFlightPlanRemark instead of 2 individual maps

This commit is contained in:
Klaus Basan
2017-10-02 23:36:03 +02:00
committed by Mathew Sutcliffe
parent 3c24d5c7f9
commit 3de7d66e65
2 changed files with 10 additions and 32 deletions

View File

@@ -122,26 +122,16 @@ namespace BlackCore
{ {
if (callsign.isEmpty()) { return CVoiceCapabilities(); } if (callsign.isEmpty()) { return CVoiceCapabilities(); }
QReadLocker rl(&m_lock); QReadLocker rl(&m_lock);
return m_voiceCapabilities.contains(callsign) ? return m_flightPlanRemarks.value(callsign).getVoiceCapabilities();
m_voiceCapabilities[callsign] :
CVoiceCapabilities::fromVoiceCapabilities(CVoiceCapabilities::Unknown);
} }
QString CVatsimDataFileReader::getFlightPlanRemarksForCallsign(const CCallsign &callsign) const CFlightPlanRemarks CVatsimDataFileReader::getFlightPlanRemarksForCallsign(const CCallsign &callsign) const
{ {
if (callsign.isEmpty()) { return QString(); } if (callsign.isEmpty()) { return QString(); }
QReadLocker rl(&m_lock); QReadLocker rl(&m_lock);
return m_flightPlanRemarks.value(callsign); return m_flightPlanRemarks.value(callsign);
} }
CFlightPlanRemarks CVatsimDataFileReader::getParsedFlightPlanRemarksForCallsign(const CCallsign &callsign) const
{
if (callsign.isEmpty()) { return CFlightPlanRemarks(); }
const QString remarks = this->getFlightPlanRemarksForCallsign(callsign);
const CVoiceCapabilities vc = this->getVoiceCapabilityForCallsign(callsign);
return CFlightPlanRemarks(remarks, vc);
}
void CVatsimDataFileReader::updateWithVatsimDataFileData(CSimulatedAircraft &aircraftToBeUdpated) const void CVatsimDataFileReader::updateWithVatsimDataFileData(CSimulatedAircraft &aircraftToBeUdpated) const
{ {
this->getAircraft().updateWithVatsimDataFileData(aircraftToBeUdpated); this->getAircraft().updateWithVatsimDataFileData(aircraftToBeUdpated);
@@ -239,8 +229,7 @@ namespace BlackCore
CServerList fsdServers; CServerList fsdServers;
CAtcStationList atcStations; CAtcStationList atcStations;
CSimulatedAircraftList aircraft; CSimulatedAircraftList aircraft;
QMap<CCallsign, CVoiceCapabilities> voiceCapabilitiesMap; QMap<CCallsign, CFlightPlanRemarks> flightPlanRemarksMap;
QMap<CCallsign, QString> flightPlanRemarksMap;
QDateTime updateTimestampFromFile; QDateTime updateTimestampFromFile;
QStringList clientSectionAttributes; QStringList clientSectionAttributes;
@@ -263,7 +252,7 @@ namespace BlackCore
if (clientSectionAttributes.isEmpty() && currentLine.contains("!CLIENTS SECTION", Qt::CaseInsensitive)) if (clientSectionAttributes.isEmpty() && currentLine.contains("!CLIENTS SECTION", Qt::CaseInsensitive))
{ {
// ; !CLIENTS section // ; !CLIENTS section
int i = currentLine.lastIndexOf(' '); const int i = currentLine.lastIndexOf(' ');
const QVector<QStringRef> attributes = currentLine.midRef(i).trimmed().split(':', QString::SkipEmptyParts); const QVector<QStringRef> attributes = currentLine.midRef(i).trimmed().split(':', QString::SkipEmptyParts);
for (const QStringRef &attr : attributes) { clientSectionAttributes.push_back(attr.toString().trimmed().toLower()); } for (const QStringRef &attr : attributes) { clientSectionAttributes.push_back(attr.toString().trimmed().toLower()); }
section = SectionNone; // reset section = SectionNone; // reset
@@ -297,21 +286,17 @@ namespace BlackCore
// Voice capabilities // Voice capabilities
if (!flightPlanRemarks.isEmpty()) if (!flightPlanRemarks.isEmpty())
{ {
flightPlanRemarksMap[callsign] = flightPlanRemarks; // CFlightPlanRemarks contains voice capabilities and other parsed values
const CVoiceCapabilities vc(flightPlanRemarks); flightPlanRemarksMap[callsign] = CFlightPlanRemarks(flightPlanRemarks);
if (!vc.isUnknown())
{
voiceCapabilitiesMap.insert(callsign, vc);
}
} }
// set as per ATC/pilot // set as per ATC/pilot
if (clientType.startsWith('p')) if (clientType.startsWith('p'))
{ {
// Pilot section // Pilot section
const double groundspeedKts = clientPartsMap["groundspeed"].toDouble(); const double groundSpeedKts = clientPartsMap["groundspeed"].toDouble();
CAircraftSituation situation(position); CAircraftSituation situation(position);
situation.setGroundSpeed(CSpeed(groundspeedKts, CSpeedUnit::kts())); situation.setGroundSpeed(CSpeed(groundSpeedKts, CSpeedUnit::kts()));
CSimulatedAircraft currentAircraft(user.getCallsign().getStringAsSet(), user, situation); CSimulatedAircraft currentAircraft(user.getCallsign().getStringAsSet(), user, situation);
const QString equipmentCodeAndAircraft = clientPartsMap["planned_aircraft"].trimmed(); const QString equipmentCodeAndAircraft = clientPartsMap["planned_aircraft"].trimmed();
@@ -327,7 +312,6 @@ namespace BlackCore
illegalEquipmentCodes.append(equipmentCodeAndAircraft); illegalEquipmentCodes.append(equipmentCodeAndAircraft);
} }
} }
aircraft.push_back(currentAircraft); aircraft.push_back(currentAircraft);
} }
else if (clientType.startsWith('a')) else if (clientType.startsWith('a'))
@@ -403,7 +387,6 @@ namespace BlackCore
this->setUpdateTimestamp(updateTimestampFromFile); this->setUpdateTimestamp(updateTimestampFromFile);
m_aircraft = aircraft; m_aircraft = aircraft;
m_atcStations = atcStations; m_atcStations = atcStations;
m_voiceCapabilities = voiceCapabilitiesMap;
m_flightPlanRemarks = flightPlanRemarksMap; m_flightPlanRemarks = flightPlanRemarksMap;
} }

View File

@@ -111,11 +111,7 @@ namespace BlackCore
//! Flight plan remarks for callsign //! Flight plan remarks for callsign
//! \threadsafe //! \threadsafe
QString getFlightPlanRemarksForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const; BlackMisc::Aviation::CFlightPlanRemarks getFlightPlanRemarksForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const;
//! Parsed flight plan remarks for callsign
//! \threadsafe
BlackMisc::Aviation::CFlightPlanRemarks getParsedFlightPlanRemarksForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const;
//! Update aircraft with VATSIM aircraft data from data file //! Update aircraft with VATSIM aircraft data from data file
//! \threadsafe //! \threadsafe
@@ -159,8 +155,7 @@ namespace BlackCore
BlackMisc::Simulation::CSimulatedAircraftList m_aircraft; BlackMisc::Simulation::CSimulatedAircraftList m_aircraft;
BlackMisc::CData<BlackCore::Data::TVatsimSetup> m_lastGoodSetup { this }; BlackMisc::CData<BlackCore::Data::TVatsimSetup> m_lastGoodSetup { this };
BlackMisc::CSettingReadOnly<BlackCore::Vatsim::TVatsimDataFile> m_settings { this, &CVatsimDataFileReader::reloadSettings }; BlackMisc::CSettingReadOnly<BlackCore::Vatsim::TVatsimDataFile> m_settings { this, &CVatsimDataFileReader::reloadSettings };
QMap<BlackMisc::Aviation::CCallsign, BlackMisc::Network::CVoiceCapabilities> m_voiceCapabilities; //!< voice capabilities QMap<BlackMisc::Aviation::CCallsign, BlackMisc::Aviation::CFlightPlanRemarks> m_flightPlanRemarks; //!< cache for flight plan remarks
QMap<BlackMisc::Aviation::CCallsign, QString> m_flightPlanRemarks; //!< cache for flight plan remarks
//! Reload the reader settings //! Reload the reader settings
void reloadSettings(); void reloadSettings();