]> git.treefish.org Git - phys/latlib.git/commitdiff
only storing concurrent config file HASHES instead of full names.
authorAlex Schmidt <alex@treefish.org>
Wed, 20 Mar 2013 15:00:06 +0000 (16:00 +0100)
committerAlex Schmidt <alex@treefish.org>
Wed, 20 Mar 2013 15:00:06 +0000 (16:00 +0100)
configcache.cpp
configcache.h
hypercache.cpp
hypercache.h

index b375230174beb942e736dd2388affec9b0225059..1095775e8b097dd9afaf8a641d6a10f17630619c 100644 (file)
@@ -172,7 +172,7 @@ void * configcache::getHeader(const string& headerid) {
   return NULL;
 }
 
   return NULL;
 }
 
-bool configcache::readConfig(vector<string> *excludefiles)
+bool configcache::readConfig(vector<unsigned long> *excludeFileHashes)
 {   
   if(DATADIR == "" || MODE == CACHE_MODE_DISABLED) return false;
 
 {   
   if(DATADIR == "" || MODE == CACHE_MODE_DISABLED) return false;
 
@@ -190,9 +190,9 @@ bool configcache::readConfig(vector<string> *excludefiles)
 
        openFileDesc = inFiles.back();
 
 
        openFileDesc = inFiles.back();
 
-       if (excludefiles != NULL)
-         for (vector<string>::iterator exit = excludefiles->begin(); exit != excludefiles->end(); ++exit)
-           if ( *exit == inFiles.back().filename ) {
+       if (excludeFileHashes != NULL)
+         for (vector<unsigned long>::iterator exit = excludeFileHashes->begin(); exit != excludeFileHashes->end(); ++exit)
+           if ( *exit == hash(inFiles.back().filename) ) {
              excludethisfile = true;
              break;
            }
              excludethisfile = true;
              break;
            }
index eaf610a28c7d0f80a489929f77186759b1b302a7..17c8606311f1e7536098777f127969acb2ddd31c 100644 (file)
@@ -38,7 +38,7 @@ class configcache{
   ~configcache();
   configcache(const string& cacheid, const int& nequi, const int& nskip, const string& datadir, char **configmem, const int& configMemSize, 
              const int& cachemode=CACHE_MODE_FULL, writeout *out_a=NULL);
   ~configcache();
   configcache(const string& cacheid, const int& nequi, const int& nskip, const string& datadir, char **configmem, const int& configMemSize, 
              const int& cachemode=CACHE_MODE_FULL, writeout *out_a=NULL);
-  bool readConfig(vector<string> *excludefiles=NULL);
+  bool readConfig(vector<unsigned long> *excludeFileHashes=NULL);
   void writeConfig();
   void addPara(const string& parid, const double& val=0);
   void setPara(const string& parid, const double& value);
   void writeConfig();
   void addPara(const string& parid, const double& val=0);
   void setPara(const string& parid, const double& value);
index 16de2a2dcc62db7b86a2bff5dcb000fc1703fdbe..b025ba69822763723c7478271a1b037538cc861e 100644 (file)
@@ -5,7 +5,7 @@ configcache *hypercache::C = NULL;
 vector<hypercache::para> hypercache::delayedParaAdd;
 vector<hypercache::para> hypercache::delayedParaSet;
 string hypercache::activeCFile = "";
 vector<hypercache::para> hypercache::delayedParaAdd;
 vector<hypercache::para> hypercache::delayedParaSet;
 string hypercache::activeCFile = "";
-vector<string> hypercache::parentConfigs;
+vector<unsigned long> hypercache::parentConfigs;
 writeout *hypercache::out = NULL;
 
 void hypercache::initCache(configcache **cache,
 writeout *hypercache::out = NULL;
 
 void hypercache::initCache(configcache **cache,
@@ -88,8 +88,10 @@ void hypercache::writeC() {
 }
 
 void hypercache::writeO() {
 }
 
 void hypercache::writeO() {
-  if ( activeCFile != "" )
-    O->writeHeader("concurrent_cfile", activeCFile.c_str(), (activeCFile.length()+1)*sizeof(char));
+  if ( activeCFile != "" ) {
+    unsigned long afilehash = configcache::hash(activeCFile);
+    O->writeHeader("concurrent_cfile", (char*)(&afilehash), sizeof(unsigned long));
+  }
 
   O->writeConfig(); 
 }
 
   O->writeConfig(); 
 }
@@ -98,7 +100,7 @@ bool hypercache::readO() {
   bool readret;
 
   if ( readret = O->readConfig() ) {
   bool readret;
 
   if ( readret = O->readConfig() ) {
-    char *parentconfig = (char*)O->getHeader("concurrent_cfile");
+    unsigned long *parentconfig = (unsigned long*)O->getHeader("concurrent_cfile");
     if ( parentconfig != NULL )
       addParentConfig(parentconfig);
   }
     if ( parentconfig != NULL )
       addParentConfig(parentconfig);
   }
@@ -106,10 +108,10 @@ bool hypercache::readO() {
   return readret;
 }
 
   return readret;
 }
 
-void hypercache::addParentConfig(const char* parentconfig) {
-  for (vector<string>::iterator parit = parentConfigs.begin(); parit != parentConfigs.end(); ++parit)
-    if ( *parit == parentconfig )
+void hypercache::addParentConfig(const unsigned long *parentconfig) {
+  for (vector<unsigned long>::iterator parit = parentConfigs.begin(); parit != parentConfigs.end(); ++parit)
+    if ( *parit == *parentconfig )
       return;
 
       return;
 
-  parentConfigs.push_back(parentconfig);
+  parentConfigs.push_back(*parentconfig);
 }
 }
index f37bb0f212409a74275ca45422dbf262fb775c96..11e1565148047d926370cbe9f73b12d522fc96a0 100644 (file)
@@ -52,8 +52,8 @@ class hypercache {
 
   static string fileOfPath(const string& dressedfile);
   static string activeCFile;
 
   static string fileOfPath(const string& dressedfile);
   static string activeCFile;
-  static vector<string> parentConfigs;
-  static void addParentConfig(const char* parentconfig);
+  static vector<unsigned long> parentConfigs;
+  static void addParentConfig(const unsigned long *parentconfig);
 };
 
 #endif
 };
 
 #endif