Merged revisions 10129-10142 via svnmerge from
[wvapps.git] / funfs / funfscim.h
blob40fa1886bf0d3e48c342e0baa23539224225e607
1 #ifndef __FUNFSCIM_H
2 #define __FUNFSCIM_H
4 #include "funfscommon.h"
6 #include <wvfam.h>
7 #include <wvscatterhash.h>
9 #define UTD_READ (1 << 0)
10 #define UTD_ATTR (1 << 1)
11 #define UTD_LINK (1 << 2)
12 #define UTD_LIST (1 << 3)
14 #define FILEMASK (UTD_READ & UTD_ATTR & UTD_LINK)
15 #define DIRMASK (UTD_LIST)
17 class CacheInfo
19 friend class CacheInfoMgr;
20 public:
21 CacheInfo(CacheInfoMgr *_cim, WvStringParm _path, bool _root = false);
22 ~CacheInfo();
24 void mark_uptodate(uint8 _uptodate);
25 bool is_uptodate(uint8 _uptodate);
26 void invalidate(bool thisfile);
28 void add_child();
29 void remove_child();
31 WvString path;
33 private:
34 bool root;
36 uint8 uptodate;
37 uint32 famid;
38 uint32 child_count;
40 CacheInfoMgr *cim;
43 DeclareWvScatterDict2(FI_by_path, CacheInfo, WvString, path);
45 class CacheInfoMgr
47 friend class CacheInfo;
48 public:
49 CacheInfoMgr();
50 virtual ~CacheInfoMgr() {};
52 void cim_mark_uptodate(WvStringParm file, JobType jobtype);
53 void cim_do_open(WvStringParm file, int fd);
54 void cim_do_close(int fd);
56 protected:
57 CacheInfo *get_fileinfo(WvStringParm path);
59 virtual void file_changed(WvStringParm path) = 0;
60 virtual void file_deleted(WvStringParm path) = 0;
61 virtual void file_created(WvStringParm path) = 0;
63 void fam_callback(WvStringParm file, WvFamEvent event, bool fromdir);
65 WvFamBase fam;
67 FI_by_path fi_by_path;
68 WvMap<int, WvString> fdmap;
72 #endif //__FUNFSCIM_H