Files
GServer-v2/server/include/CFileSystem.h
T
nalin ddae7dd9ff Fixed a problem where the serverpath path separators weren't being converted for the correct OS.
Major improvements to CFileSystem to make way for foldersconfig.txt support.  Includes a bunch of bug fixes.  In all, the class is a lot more consistent.
2009-01-10 22:12:12 +00:00

49 lines
1.3 KiB
C++

#ifndef CFILESYSTEM_H
#define CFILESYSTEM_H
#include <map>
#include "ICommon.h"
#include "CString.h"
//#include "TServer.h"
class TServer;
class CFileSystem
{
public:
CFileSystem() : server(0) { }
CFileSystem(TServer* pServer);
void setServer(TServer* pServer) { server = pServer; }
void addDir(const CString& dir, const CString& wildcard = "*");
void removeDir(const CString& dir);
void addFile(const CString& file);
void removeFile(const CString& file);
void resync();
CString find(const CString& file) const;
CString findi(const CString& file) const;
CString finddir(const CString& file) const;
CString finddiri(const CString& file) const;
CString load(const CString& file) const;
time_t getModTime(const CString& file) const;
bool setModTime(const CString& file, time_t modTime) const;
int getFileSize(const CString& file) const;
std::map<CString, CString>* getFileList() { return &fileList; }
std::map<CString, CString>* getDirList() { return &dirList; }
mutable boost::recursive_mutex m_preventChange;
static void fixPathSeparators(CString* pPath);
private:
void loadAllDirectories(const CString& directory, bool recursive = false);
TServer* server;
CString basedir;
std::map<CString, CString> fileList;
std::map<CString, CString> dirList;
};
#endif