mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-05-11 10:35:22 -04:00
the cache is corrected and saved
This commit is contained in:
parent
683e3579aa
commit
3f8611f40f
3 changed files with 35 additions and 9 deletions
|
@ -133,12 +133,7 @@ void HashStorage::data_tick()
|
|||
|
||||
if(!mChanged) // otherwise it might prevent from saving the hash cache
|
||||
{
|
||||
std::cerr << "Stopping hashing thread." << std::endl;
|
||||
shutdown();
|
||||
mRunning = false ;
|
||||
mTotalSizeToHash = 0;
|
||||
mTotalFilesToHash = 0;
|
||||
std::cerr << "done." << std::endl;
|
||||
stopHashThread();
|
||||
}
|
||||
|
||||
RsServer::notify()->notifyHashingInfo(NOTIFY_HASHTYPE_FINISH, "") ;
|
||||
|
@ -261,6 +256,16 @@ bool HashStorage::requestHash(const std::string& full_path,uint64_t size,rstime_
|
|||
{
|
||||
it->second.time_stamp = now ;
|
||||
|
||||
#ifdef WINDOWS_SYS
|
||||
if(it->second.modf_stamp != (uint64_t)mod_time)
|
||||
{
|
||||
std::cerr << "(WW) detected a 1 hour shift in file modification time. This normally happens to many files at once, when daylight saving time shifts (file=\"" << full_path << "\")." << std::endl;
|
||||
it->second.modf_stamp = (uint64_t)mod_time;
|
||||
mChanged = true;
|
||||
startHashThread();
|
||||
}
|
||||
#endif
|
||||
|
||||
known_hash = it->second.hash;
|
||||
#ifdef HASHSTORAGE_DEBUG
|
||||
std::cerr << "Found in cache." << std::endl ;
|
||||
|
@ -293,6 +298,13 @@ bool HashStorage::requestHash(const std::string& full_path,uint64_t size,rstime_
|
|||
mTotalSizeToHash += size ;
|
||||
++mTotalFilesToHash;
|
||||
|
||||
startHashThread();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void HashStorage::startHashThread()
|
||||
{
|
||||
if(!mRunning)
|
||||
{
|
||||
mRunning = true ;
|
||||
|
@ -300,10 +312,21 @@ bool HashStorage::requestHash(const std::string& full_path,uint64_t size,rstime_
|
|||
mHashCounter = 0;
|
||||
mTotalHashedSize = 0;
|
||||
|
||||
start("fs hash cache") ;
|
||||
start("fs hash cache") ;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
void HashStorage::stopHashThread()
|
||||
{
|
||||
if (mRunning)
|
||||
{
|
||||
std::cerr << "Stopping hashing thread." << std::endl;
|
||||
shutdown();
|
||||
mRunning = false ;
|
||||
mTotalSizeToHash = 0;
|
||||
mTotalFilesToHash = 0;
|
||||
std::cerr << "done." << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void HashStorage::clean()
|
||||
|
|
|
@ -97,6 +97,9 @@ private:
|
|||
*/
|
||||
void clean() ;
|
||||
|
||||
void startHashThread();
|
||||
void stopHashThread();
|
||||
|
||||
// loading/saving the entire hash database to a file
|
||||
|
||||
void locked_save() ;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue