mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-06-23 13:54:27 -04:00
fixed compilation of file lists code base
This commit is contained in:
parent
3e20b9ddf7
commit
63063102bb
7 changed files with 80 additions and 19 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -3,6 +3,7 @@
|
||||||
moc_*.cpp
|
moc_*.cpp
|
||||||
qrc_*.cpp
|
qrc_*.cpp
|
||||||
ui_*.h
|
ui_*.h
|
||||||
Makefile.*
|
Makefile*
|
||||||
|
*.sw?
|
||||||
*~
|
*~
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
|
|
0
libretroshare/src/file_sharing/directory_storage.cc
Normal file
0
libretroshare/src/file_sharing/directory_storage.cc
Normal file
|
@ -1,8 +1,12 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <list>
|
||||||
|
|
||||||
|
#include "retroshare/rsids.h"
|
||||||
|
#include "retroshare/rsfiles.h"
|
||||||
|
|
||||||
static const uint8_t DIRECTORY_STORAGE_VERSION = 0x01 ;
|
static const uint8_t DIRECTORY_STORAGE_VERSION = 0x01 ;
|
||||||
|
|
||||||
static const uint8_t DIRECTORY_STORAGE_TAG_FILE_HASH = 0x01 ;
|
|
||||||
static const uint8_t DIRECTORY_STORAGE_TAG_FILE_HASH = 0x01 ;
|
static const uint8_t DIRECTORY_STORAGE_TAG_FILE_HASH = 0x01 ;
|
||||||
static const uint8_t DIRECTORY_STORAGE_TAG_FILE_NAME = 0x02 ;
|
static const uint8_t DIRECTORY_STORAGE_TAG_FILE_NAME = 0x02 ;
|
||||||
static const uint8_t DIRECTORY_STORAGE_TAG_FILE_SIZE = 0x03 ;
|
static const uint8_t DIRECTORY_STORAGE_TAG_FILE_SIZE = 0x03 ;
|
||||||
|
@ -14,6 +18,9 @@ class DirectoryStorage
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DirectoryStorage(const std::string& local_file_name) ;
|
DirectoryStorage(const std::string& local_file_name) ;
|
||||||
|
virtual ~DirectoryStorage() {}
|
||||||
|
|
||||||
|
typedef uint32_t EntryIndex ;
|
||||||
|
|
||||||
void save() const ;
|
void save() const ;
|
||||||
|
|
||||||
|
@ -57,9 +64,15 @@ class DirectoryStorage
|
||||||
|
|
||||||
class RemoteDirectoryStorage: public DirectoryStorage
|
class RemoteDirectoryStorage: public DirectoryStorage
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
RemoteDirectoryStorage(const RsPeerId& pid) ;
|
||||||
|
virtual ~RemoteDirectoryStorage() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class LocalDirectoryStorage: public DirectoryStorage
|
class LocalDirectoryStorage: public DirectoryStorage
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
LocalDirectoryStorage() ;
|
||||||
|
virtual ~LocalDirectoryStorage() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -11,15 +11,19 @@ class DirectoryUpdater
|
||||||
// Does some updating job. Crawls the existing directories and checks wether it has been updated
|
// Does some updating job. Crawls the existing directories and checks wether it has been updated
|
||||||
// recently enough. If not, calls the directry source.
|
// recently enough. If not, calls the directry source.
|
||||||
//
|
//
|
||||||
void tick() ;
|
virtual void tick() =0;
|
||||||
|
|
||||||
//
|
//
|
||||||
};
|
};
|
||||||
|
|
||||||
class LocalDirectoryUpdater: public DirectoryUpdater
|
class LocalDirectoryUpdater: public DirectoryUpdater
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
virtual void tick() ;
|
||||||
};
|
};
|
||||||
|
|
||||||
class RemoteDirectoryUpdater: public DirectoryUpdater
|
class RemoteDirectoryUpdater: public DirectoryUpdater
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
virtual void tick() ;
|
||||||
};
|
};
|
||||||
|
|
0
libretroshare/src/file_sharing/hash_cache.cc
Normal file
0
libretroshare/src/file_sharing/hash_cache.cc
Normal file
|
@ -1,15 +1,16 @@
|
||||||
#include "file_sharing/p3filelists.h"
|
#include "file_sharing/p3filelists.h"
|
||||||
|
#include "file_sharing/directory_storage.h"
|
||||||
#include "retroshare/rsids.h"
|
#include "retroshare/rsids.h"
|
||||||
|
|
||||||
#define P3FILELISTS_DEBUG() std::cerr << "p3FileLists: " ;
|
#define P3FILELISTS_DEBUG() std::cerr << "p3FileLists: "
|
||||||
|
|
||||||
static const uint32_t P3FILELISTS_UPDATE_FLAG_NOTHING_CHANGED = 0x0000 ;
|
static const uint32_t P3FILELISTS_UPDATE_FLAG_NOTHING_CHANGED = 0x0000 ;
|
||||||
static const uint32_t P3FILELISTS_UPDATE_FLAG_REMOTE_MAP_CHANGED = 0x0001 ;
|
static const uint32_t P3FILELISTS_UPDATE_FLAG_REMOTE_MAP_CHANGED = 0x0001 ;
|
||||||
static const uint32_t P3FILELISTS_UPDATE_FLAG_LOCAL_DIRS_CHANGED = 0x0002 ;
|
static const uint32_t P3FILELISTS_UPDATE_FLAG_LOCAL_DIRS_CHANGED = 0x0002 ;
|
||||||
static const uint32_t P3FILELISTS_UPDATE_FLAG_REMOTE_DIRS_CHANGED = 0x0004 ;
|
static const uint32_t P3FILELISTS_UPDATE_FLAG_REMOTE_DIRS_CHANGED = 0x0004 ;
|
||||||
|
|
||||||
p3FileLists::p3FileLists(mPeerPgr *mpeers)
|
p3FileLists::p3FileLists(p3LinkMgr *mpeers)
|
||||||
: mPeers(mpeers)
|
: mLinkMgr(mpeers), mFLSMtx("p3FileLists")
|
||||||
{
|
{
|
||||||
// loads existing indexes for friends. Some might be already present here.
|
// loads existing indexes for friends. Some might be already present here.
|
||||||
//
|
//
|
||||||
|
@ -20,12 +21,19 @@ p3FileLists::p3FileLists(mPeerPgr *mpeers)
|
||||||
//
|
//
|
||||||
mUpdateFlags = P3FILELISTS_UPDATE_FLAG_NOTHING_CHANGED ;
|
mUpdateFlags = P3FILELISTS_UPDATE_FLAG_NOTHING_CHANGED ;
|
||||||
}
|
}
|
||||||
void p3FileLists::~p3FileLists()
|
p3FileLists::~p3FileLists()
|
||||||
{
|
{
|
||||||
|
RS_STACK_MUTEX(mFLSMtx) ;
|
||||||
|
|
||||||
|
for(std::map<RsPeerId,RemoteDirectoryStorage*>::const_iterator it(mRemoteDirectories.begin());it!=mRemoteDirectories.end();++it)
|
||||||
|
delete it->second ;
|
||||||
|
|
||||||
|
mRemoteDirectories.clear(); // just a precaution, not to leave deleted pointers around.
|
||||||
|
|
||||||
// delete all pointers
|
// delete all pointers
|
||||||
}
|
}
|
||||||
|
|
||||||
void p3FileLists::tick()
|
int p3FileLists::tick()
|
||||||
{
|
{
|
||||||
// tick the watchers, possibly create new ones if additional friends do connect.
|
// tick the watchers, possibly create new ones if additional friends do connect.
|
||||||
//
|
//
|
||||||
|
@ -41,6 +49,8 @@ void p3FileLists::tick()
|
||||||
// -
|
// -
|
||||||
|
|
||||||
cleanup();
|
cleanup();
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void p3FileLists::tickRecv()
|
void p3FileLists::tickRecv()
|
||||||
|
@ -51,19 +61,24 @@ void p3FileLists::tickSend()
|
||||||
// go through the list of out requests and send them to the corresponding friends, if they are online.
|
// go through the list of out requests and send them to the corresponding friends, if they are online.
|
||||||
}
|
}
|
||||||
|
|
||||||
void p3FileLists::loadList(std::list<RsItem *>& items)
|
bool p3FileLists::loadList(std::list<RsItem *>& items)
|
||||||
{
|
{
|
||||||
// This loads
|
// This loads
|
||||||
//
|
//
|
||||||
// - list of locally shared directories, and the permissions that go with them
|
// - list of locally shared directories, and the permissions that go with them
|
||||||
|
|
||||||
|
return true ;
|
||||||
}
|
}
|
||||||
|
|
||||||
void p3FileLists::saveList(const std::list<RsItem *>& items)
|
bool p3FileLists::saveList(const std::list<RsItem *>& items)
|
||||||
{
|
{
|
||||||
|
return true ;
|
||||||
}
|
}
|
||||||
|
|
||||||
void p3FileLists::cleanup()
|
void p3FileLists::cleanup()
|
||||||
{
|
{
|
||||||
|
RS_STACK_MUTEX(mFLSMtx) ;
|
||||||
|
|
||||||
// look through the list of friend directories. Remove those who are not our friends anymore.
|
// look through the list of friend directories. Remove those who are not our friends anymore.
|
||||||
//
|
//
|
||||||
P3FILELISTS_DEBUG() << "Cleanup pass." << std::endl;
|
P3FILELISTS_DEBUG() << "Cleanup pass." << std::endl;
|
||||||
|
@ -72,13 +87,13 @@ void p3FileLists::cleanup()
|
||||||
{
|
{
|
||||||
#warning we should use a std::set in the first place. Modify rsPeers?
|
#warning we should use a std::set in the first place. Modify rsPeers?
|
||||||
std::list<RsPeerId> friend_list ;
|
std::list<RsPeerId> friend_list ;
|
||||||
mPeers->getFriendList(friend_list) ;
|
mLinkMgr->getFriendList(friend_list) ;
|
||||||
|
|
||||||
for(std::list<RsPeerId>::const_iterator it(friend_list.begin());it!=friend_list.end();++it)
|
for(std::list<RsPeerId>::const_iterator it(friend_list.begin());it!=friend_list.end();++it)
|
||||||
friend_set.insert(*it) ;
|
friend_set.insert(*it) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(std::map<RsPeerId,RemoteDirectoryStorage*>::const_iterator it(mRemoteDirectories.begin());it!=mRemoteDirectories.end();)
|
for(std::map<RsPeerId,RemoteDirectoryStorage*>::iterator it(mRemoteDirectories.begin());it!=mRemoteDirectories.end();)
|
||||||
if(friend_set.find(it->first) == friend_set.end())
|
if(friend_set.find(it->first) == friend_set.end())
|
||||||
{
|
{
|
||||||
P3FILELISTS_DEBUG() << " removing file list of non friend " << it->first << std::endl;
|
P3FILELISTS_DEBUG() << " removing file list of non friend " << it->first << std::endl;
|
||||||
|
|
|
@ -21,15 +21,32 @@
|
||||||
//
|
//
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <services/p3service.h>
|
#include "retroshare/rsfiles.h"
|
||||||
#include <pqi/p3cfgmgr.h>
|
#include "services/p3service.h"
|
||||||
|
|
||||||
class p3FileLists: public p3Service, public p3Config, public RsSharedFileService
|
#include "pqi/p3cfgmgr.h"
|
||||||
|
#include "pqi/p3linkmgr.h"
|
||||||
|
|
||||||
|
class RemoteDirectoryStorage ;
|
||||||
|
class RemoteSharedDirectoryWatcher ;
|
||||||
|
class LocalSharedDirectoryWatcher ;
|
||||||
|
class LocalSharedDirectoryMap ;
|
||||||
|
class HashCache ;
|
||||||
|
|
||||||
|
class p3FileLists: public p3Service, public p3Config //, public RsSharedFileService
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef uint64_t EntryIndex ; // this should probably be defined elsewhere
|
typedef uint64_t EntryIndex ; // this should probably be defined elsewhere
|
||||||
|
|
||||||
p3FileLists(mPeerMgr *mpeers) ;
|
struct RsFileListSyncRequest
|
||||||
|
{
|
||||||
|
RsPeerId peerId ;
|
||||||
|
EntryIndex index ;
|
||||||
|
// [...] more to add here
|
||||||
|
};
|
||||||
|
|
||||||
|
p3FileLists(p3LinkMgr *mpeers) ;
|
||||||
|
~p3FileLists();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*/
|
*/
|
||||||
|
@ -61,8 +78,16 @@ class p3FileLists: public p3Service, public p3Config, public RsSharedFileService
|
||||||
|
|
||||||
// Derived from p3Config
|
// Derived from p3Config
|
||||||
//
|
//
|
||||||
|
protected:
|
||||||
|
virtual bool loadList(std::list<RsItem *>& items);
|
||||||
|
virtual bool saveList(const std::list<RsItem *>& items);
|
||||||
|
void cleanup();
|
||||||
|
void tickRecv();
|
||||||
|
void tickSend();
|
||||||
|
void tickWatchers();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
p3PeerMgr *mPeers ;
|
p3LinkMgr *mLinkMgr ;
|
||||||
|
|
||||||
// File sync request queues. The fast one is used for online browsing when friends are connected.
|
// File sync request queues. The fast one is used for online browsing when friends are connected.
|
||||||
// The slow one is used for background update of file lists.
|
// The slow one is used for background update of file lists.
|
||||||
|
@ -83,6 +108,9 @@ class p3FileLists: public p3Service, public p3Config, public RsSharedFileService
|
||||||
//
|
//
|
||||||
HashCache *mHashCache ;
|
HashCache *mHashCache ;
|
||||||
|
|
||||||
|
// Local flags and mutexes
|
||||||
|
|
||||||
RsMutex mFLSMtx ;
|
RsMutex mFLSMtx ;
|
||||||
|
uint32_t mUpdateFlags ;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue