refs #748, airport JSON reader bug in changed URL fixed (URL was always flagged as changed)

In same step some code cleanup
This commit is contained in:
Klaus Basan
2016-10-24 03:29:15 +02:00
parent b87a3dffaa
commit 6a8c8c8889
4 changed files with 37 additions and 11 deletions

View File

@@ -55,7 +55,7 @@ namespace BlackCore
bool CAirportDataReader::hasChangedUrl(CEntityFlags::Entity entity) const
{
Q_UNUSED(entity);
return CDatabaseReader::isChangedUrl(this->m_readerUrlCache.get(), this->getAirportsUrl());
return CDatabaseReader::isChangedUrl(this->m_readerUrlCache.get(), getBaseUrl());
}
CUrl CAirportDataReader::getAirportsUrl() const
@@ -93,8 +93,9 @@ namespace BlackCore
latestTimestamp = lastModifiedMsSinceEpoch(nwReply);
}
m_airportCache.set(airports, latestTimestamp);
emit dataRead(CEntityFlags::AirportEntity, CEntityFlags::ReadFinished, airports.size());
this->m_airportCache.set(airports, latestTimestamp);
this->updateReaderUrl(getBaseUrl());
emit this->dataRead(CEntityFlags::AirportEntity, CEntityFlags::ReadFinished, airports.size());
}
void CAirportDataReader::ps_read(CEntityFlags::Entity entity, const QDateTime &newerThan)
@@ -131,5 +132,23 @@ namespace BlackCore
{
// void
}
void CAirportDataReader::updateReaderUrl(const CUrl &url)
{
const CUrl current = this->m_readerUrlCache.get();
if (current == url) { return; }
const CStatusMessage m = this->m_readerUrlCache.set(url);
if (m.isFailure())
{
CLogMessage::preformatted(m);
}
}
const CUrl &CAirportDataReader::getBaseUrl()
{
static const CUrl baseUrl(sApp->getGlobalSetup().getDbAirportReaderUrl());
return baseUrl;
}
} // ns
} // ns

View File

@@ -70,6 +70,13 @@ namespace BlackCore
//! Reader URL (we read from where?) used to detect changes of location
BlackMisc::CData<BlackCore::Data::TDbModelReaderBaseUrl> m_readerUrlCache {this, &CAirportDataReader::ps_baseUrlCacheChanged };
//! Update reader URL
void updateReaderUrl(const BlackMisc::Network::CUrl &url);
//! Base URL
//! \threadsafe
static const BlackMisc::Network::CUrl &getBaseUrl();
};
}
} // ns

View File

@@ -243,7 +243,7 @@ namespace BlackCore
}
this->m_aircraftIcaoCache.set(codes, latestTimestamp);
this->updateReaderUrl(this->getBaseUrl());
this->updateReaderUrl(getBaseUrl());
emit dataRead(CEntityFlags::AircraftIcaoEntity, CEntityFlags::ReadFinished, n);
CLogMessage(this).info("Read %1 %2 from %3") << n << CEntityFlags::flagToString(CEntityFlags::AircraftIcaoEntity) << urlString;
}
@@ -271,7 +271,7 @@ namespace BlackCore
}
this->m_airlineIcaoCache.set(codes, latestTimestamp);
this->updateReaderUrl(this->getBaseUrl());
this->updateReaderUrl(getBaseUrl());
emit dataRead(CEntityFlags::AirlineIcaoEntity, CEntityFlags::ReadFinished, n);
CLogMessage(this).info("Read %1 %2 from %3") << n << CEntityFlags::flagToString(CEntityFlags::AirlineIcaoEntity) << urlString;
}
@@ -297,7 +297,7 @@ namespace BlackCore
}
this->m_countryCache.set(countries, latestTimestamp);
this->updateReaderUrl(this->getBaseUrl());
this->updateReaderUrl(getBaseUrl());
emit dataRead(CEntityFlags::CountryEntity, CEntityFlags::ReadFinished, n);
CLogMessage(this).info("Read %1 %2 from %3") << n << CEntityFlags::flagToString(CEntityFlags::CountryEntity) << urlString;
}
@@ -432,7 +432,7 @@ namespace BlackCore
bool CIcaoDataReader::hasChangedUrl(CEntityFlags::Entity entity) const
{
Q_UNUSED(entity);
return CDatabaseReader::isChangedUrl(this->m_readerUrlCache.get(), this->getBaseUrl());
return CDatabaseReader::isChangedUrl(this->m_readerUrlCache.get(), getBaseUrl());
}
CUrl CIcaoDataReader::getAircraftIcaoUrl(bool shared) const

View File

@@ -282,7 +282,7 @@ namespace BlackCore
latestTimestamp = lastModifiedMsSinceEpoch(nwReply.data());
}
this->m_liveryCache.set(liveries, latestTimestamp);
this->updateReaderUrl(this->getBaseUrl());
this->updateReaderUrl(getBaseUrl());
// never emit when lock is held -> deadlock
emit dataRead(CEntityFlags::LiveryEntity, res.isRestricted() ? CEntityFlags::ReadFinishedRestricted : CEntityFlags::ReadFinished, n);
@@ -325,7 +325,7 @@ namespace BlackCore
latestTimestamp = lastModifiedMsSinceEpoch(nwReply.data());
}
this->m_distributorCache.set(distributors, latestTimestamp);
this->updateReaderUrl(this->getBaseUrl());
this->updateReaderUrl(getBaseUrl());
emit dataRead(CEntityFlags::DistributorEntity, res.isRestricted() ? CEntityFlags::ReadFinishedRestricted : CEntityFlags::ReadFinished, n);
CLogMessage(this).info("Read %1 %2 from %3") << n << CEntityFlags::flagToString(CEntityFlags::DistributorEntity) << urlString;
@@ -368,7 +368,7 @@ namespace BlackCore
latestTimestamp = lastModifiedMsSinceEpoch(nwReply.data());
}
this->m_modelCache.set(models, latestTimestamp);
this->updateReaderUrl(this->getBaseUrl());
this->updateReaderUrl(getBaseUrl());
emit dataRead(CEntityFlags::ModelEntity, res.isRestricted() ? CEntityFlags::ReadFinishedRestricted : CEntityFlags::ReadFinished, n);
CLogMessage(this).info("Read %1 %2 from %3") << n << CEntityFlags::flagToString(CEntityFlags::ModelEntity) << urlString;
@@ -505,7 +505,7 @@ namespace BlackCore
bool CModelDataReader::hasChangedUrl(CEntityFlags::Entity entity) const
{
Q_UNUSED(entity);
return CDatabaseReader::isChangedUrl(this->m_readerUrlCache.get(), this->getBaseUrl());
return CDatabaseReader::isChangedUrl(this->m_readerUrlCache.get(), getBaseUrl());
}
const CUrl &CModelDataReader::getBaseUrl()