]> git.mxchange.org Git - simgear.git/commitdiff
Max catalog age configurable per-catalog.
authorJames Turner <zakalawe@mac.com>
Sun, 3 Mar 2013 23:03:09 +0000 (23:03 +0000)
committerJames Turner <zakalawe@mac.com>
Sun, 3 Mar 2013 23:03:09 +0000 (23:03 +0000)
Allows for short-validity catalogs for development use.

simgear/package/Catalog.cxx
simgear/package/Catalog.hxx
simgear/package/Root.cxx
simgear/package/Root.hxx

index 67b4eb19b910ff28a618e2cd3bad2c189a11a704..eede60669a4dc67792b57a392aa3af59c4de2bd7 100644 (file)
@@ -290,6 +290,12 @@ unsigned int Catalog::ageInSeconds() const
     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())) {
index bd561a44dc3af2641dede96faf20c84135fe64d8..3ea3d846519e26b0ce45c125fb77d0b1dad15663 100644 (file)
@@ -83,6 +83,12 @@ public:
     
     Package* getPackageById(const std::string& aId) const;
     
+    /**
+     * test if the catalog data was retrieved longer ago than the
+     * maximum permitted age for this catalog.
+     */
+    bool needsRefresh() const;
+    
     unsigned int ageInSeconds() const;
     
     /**
index 75eef3bb3c53c1dea737c1cf857daba1abef9f53..d5f275d154564248753092a610e98e8e5e066617 100644 (file)
@@ -68,10 +68,15 @@ SGPath Root::path() const
     return d->path;
 }
     
-void Root::setMaxAgeSeconds(int seconds)
+void Root::setMaxAgeSeconds(unsigned int seconds)
 {
     d->maxAgeSeconds = seconds;
 }
+    
+unsigned int Root::maxAgeSeconds() const
+{
+    return d->maxAgeSeconds;
+}
 
 void Root::setHTTPClient(HTTP::Client* aHTTP)
 {
@@ -207,7 +212,7 @@ void Root::refresh(bool aForce)
 {
     CatalogDict::iterator it = d->catalogs.begin();
     for (; it != d->catalogs.end(); ++it) {
-        if (aForce || (it->second->ageInSeconds() > d->maxAgeSeconds)) {
+        if (aForce || it->second->needsRefresh()) {
             it->second->refresh();
         }
     }
index cc38df77a8fa31382a337599f129f77899097fa8..176651091e98429e44f5777b886f16266653539c 100644 (file)
@@ -61,8 +61,9 @@ public:
     
     CatalogList catalogs() const;
         
-    void setMaxAgeSeconds(int seconds);
-
+    void setMaxAgeSeconds(unsigned int seconds);
+    unsigned int maxAgeSeconds() const;
+    
     void setHTTPClient(HTTP::Client* aHTTP);
 
     /**