Lots of bugfixes and tweaks:

* Switched p3Ranking to share Friends Links as well as own.
 * Modified rankmsgs to contain source id.
 * Fixed up rsNotify, added pqiNotify and global function call to get it.
 * Added notify for Bad Incoming Directory
 * Added Emergency Incoming directory so RS can keep running.
 * Added notify for Bad Packet (connecting to V0.3.X)
 * Added notify for Incomplete Packet Read (not been triggered yet!)
 * added close() to BinInterface, close on pqissl calls reset() 
 * removed exit(1) calls from pqistreamer, replaced with bio->close().
 * Increased Maximum Packet Size for HTML messages.
 * Fixed Online/Offline Message Forwarding. (TEST).
 * Increased DHT bootstrap buckets to 4.
 * Cleaned up much of serialiser debug (was slowing down Mac)
 * Added directory path to File Listings.
 * added ConvertSharedFilePath() so correct local dir can be found.
 * Added ForceDirectoryCheck() and InDirectoryCheck() for file hashing.
 * removed old TMP cache loading.
 * switched off Cache debug.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@448 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
drbob 2008-03-31 14:06:59 +00:00
parent a76baa5421
commit 5e41b21cef
36 changed files with 632 additions and 224 deletions

View file

@ -40,7 +40,8 @@
FileIndexMonitor::FileIndexMonitor(CacheStrapper *cs, std::string cachedir, std::string pid)
:CacheSource(RS_SERVICE_TYPE_FILE_INDEX, false, cs, cachedir), fi(pid),
pendingDirs(false), pendingForceCacheWrite(false)
pendingDirs(false), pendingForceCacheWrite(false),
mForceCheck(false), mInCheck(false)
{
updatePeriod = 60;
@ -98,6 +99,32 @@ bool FileIndexMonitor::findLocalFile(std::string hash,
return ok;
}
bool FileIndexMonitor::convertSharedFilePath(std::string path, std::string &fullpath)
{
bool ok = false;
fiMutex.lock(); { /* LOCKED DIRS */
std::cerr << "FileIndexMonitor::convertSharedFilePath() path: " << path << std::endl;
std::string shpath = RsDirUtil::removeRootDir(path);
std::string basedir = RsDirUtil::getRootDir(path);
std::string realroot = findRealRoot(basedir);
/* construct full name */
if (realroot.length() > 0)
{
fullpath = realroot + "/";
fullpath += shpath;
std::cerr << "FileIndexMonitor::convertSharedFilePath() Found Path: " << fullpath << std::endl;
ok = true;
}
} fiMutex.unlock(); /* UNLOCKED DIRS */
return ok;
}
bool FileIndexMonitor::loadLocalCache(const CacheData &data) /* called with stored data */
{
@ -180,6 +207,11 @@ void FileIndexMonitor::updateCycle()
bool moretodo = true;
bool fiMods = false;
{
RsStackMutex stack(fiMutex); /**** LOCKED DIRS ****/
mInCheck = true;
}
while(moretodo)
{
/* sleep a bit for each loop */
@ -527,6 +559,11 @@ void FileIndexMonitor::updateCycle()
} fiMutex.unlock(); /* UNLOCKED DIRS */
}
{
RsStackMutex stack(fiMutex); /**** LOCKED DIRS ****/
mInCheck = false;
}
}
/* interface */
@ -540,6 +577,27 @@ void FileIndexMonitor::setSharedDirectories(std::list<std::string> dirs)
} fiMutex.unlock(); /* UNLOCKED DIRS */
}
/* interface */
void FileIndexMonitor::forceDirectoryCheck()
{
fiMutex.lock(); { /* LOCKED DIRS */
if (!mInCheck)
mForceCheck = true;
} fiMutex.unlock(); /* UNLOCKED DIRS */
}
/* interface */
bool FileIndexMonitor::inDirectoryCheck()
{
RsStackMutex stack(fiMutex); /**** LOCKED DIRS ****/
return mInCheck;
}
bool FileIndexMonitor::internal_setSharedDirectories()
{
int i;
@ -547,10 +605,18 @@ bool FileIndexMonitor::internal_setSharedDirectories()
if (!pendingDirs)
{
if (mForceCheck)
{
mForceCheck = false;
fiMutex.unlock(); /* UNLOCKED DIRS */
return true;
}
fiMutex.unlock(); /* UNLOCKED DIRS */
return false;
}
mForceCheck = false;
pendingDirs = false;
pendingForceCacheWrite = true;