00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef MDFSDBH
00019 #define MDFSDBH
00020
00021 #include "mdfsdbbase.h"
00022 #include "db.h"
00023
00024 namespace mdfs {
00025
00026
00033 class MDFSDB : public MDFSDBBase {
00034
00035 public:
00036
00037 MDFSDB();
00038 ~MDFSDB();
00039
00040 virtual bool UpdateFile(const MFile& f, int options);
00041 virtual bool GetFile(MFile& f);
00042 virtual void GetList(MQuery& q, MFileList& list);
00043 void GetDirContent(MQuery& q, MFileList& list);
00044
00045 private:
00046 boost::mutex Mutex;
00047 struct MEntry {
00048 MEntry() : Updated(false) {}
00049 MFile File;
00050 bool Updated;
00051 };
00052 typedef std::list<MEntry*> MMemDB;
00053 MMemDB DB;
00054
00055 ::DB* dbp;
00056 int ret, t_ret;
00057
00058 void Unmarshall(MFile& f, const DBT& data);
00059 bool Marshall(const MFile& f, DBT& data);
00060 void Load();
00061 void Save();
00062 bool GetEntry(const MFile& f, MEntry* e);
00063
00064
00065 };
00066
00067
00068
00069 }
00070
00071 #endif