}
protected:
- virtual void responseHeadersComplete()
- {
-
- }
-
virtual void gotBodyData(const char* s, int n)
{
m_buffer += std::string(s, n);
}
- virtual void responseComplete()
+ virtual void onDone()
{
if (responseCode() != 200) {
SG_LOG(SG_GENERAL, SG_ALERT, "catalog download failure:" << m_owner->url());
}
std::string ver(m_owner->root()->catalogVersion());
- if (props->getStringValue("version") != ver) {
+ if (!checkVersion(ver, props)) {
SG_LOG(SG_GENERAL, SG_WARN, "downloaded catalog " << m_owner->url() << ", version mismatch:\n\t"
<< props->getStringValue("version") << " vs required " << ver);
m_owner->refreshComplete(Delegate::FAIL_VERSION);
}
private:
+ bool checkVersion(const std::string& aVersion, SGPropertyNode* aProps)
+ {
+ BOOST_FOREACH(SGPropertyNode* v, aProps->getChildren("version")) {
+ if (v->getStringValue() == aVersion) {
+ return true;
+ }
+ }
+ return false;
+ }
+
Catalog* m_owner;
std::string m_buffer;
};
{
Catalog* c = new Catalog(aRoot);
Downloader* dl = new Downloader(c, aUrl);
- aRoot->getHTTPClient()->makeRequest(dl);
+ aRoot->makeHTTPRequest(dl);
return c;
}
void Catalog::refresh()
{
Downloader* dl = new Downloader(this, url());
- m_root->getHTTPClient()->makeRequest(dl);
+ m_root->makeHTTPRequest(dl);
m_root->catalogRefreshBegin(this);
}
return (diff < 0) ? 0 : diff;
}
+bool Catalog::needsRefresh() const
+{
+ unsigned int maxAge = m_props->getIntValue("max-age-sec", m_root->maxAgeSeconds());
+ return (ageInSeconds() > maxAge);
+}
+
std::string Catalog::getLocalisedString(const SGPropertyNode* aRoot, const char* aName) const
{
if (aRoot->hasChild(m_root->getLocale())) {