]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/fs/rock/RockSwapDir.h
1 #ifndef SQUID_FS_ROCK_SWAP_DIR_H
2 #define SQUID_FS_ROCK_SWAP_DIR_H
5 #include "DiskIO/IORequestor.h"
6 #include "fs/rock/RockFile.h"
7 #include "ipc/StoreMap.h"
19 class SwapDir
: public ::SwapDir
, public IORequestor
25 /* public ::SwapDir API */
26 virtual void reconfigure(int, char *);
27 virtual StoreSearch
*search(String
const url
, HttpRequest
*);
28 virtual StoreEntry
*get(const cache_key
*key
);
29 virtual void disconnect(StoreEntry
&e
);
30 virtual uint64_t currentSize() const;
31 virtual uint64_t currentCount() const;
32 virtual bool doReportStat() const;
33 virtual void swappedOut(const StoreEntry
&e
);
35 int64_t entryLimitHigh() const { return 0xFFFFFF; } /// Core sfileno maximum
36 int64_t entryLimitAllowed() const;
38 typedef Ipc::StoreMapWithExtras
<DbCellHeader
> DirMap
;
41 /* protected ::SwapDir API */
42 virtual bool needsDiskStrand() const;
43 virtual void create();
45 virtual bool canStore(const StoreEntry
&e
, int64_t diskSpaceNeeded
, int &load
) const;
46 virtual StoreIOState::Pointer
createStoreIO(StoreEntry
&, StoreIOState::STFNCB
*, StoreIOState::STIOCB
*, void *);
47 virtual StoreIOState::Pointer
openStoreIO(StoreEntry
&, StoreIOState::STFNCB
*, StoreIOState::STIOCB
*, void *);
48 virtual void maintain();
49 virtual void diskFull();
50 virtual void reference(StoreEntry
&e
);
51 virtual void dereference(StoreEntry
&e
);
52 virtual void unlink(StoreEntry
&e
);
53 virtual void statfs(StoreEntry
&e
) const;
56 virtual void ioCompletedNotification();
57 virtual void closeCompleted();
58 virtual void readCompleted(const char *buf
, int len
, int errflag
, RefCount
< ::ReadRequest
>);
59 virtual void writeCompleted(int errflag
, size_t len
, RefCount
< ::WriteRequest
>);
61 virtual void parse(int index
, char *path
);
62 void parseSize(); ///< parses anonymous cache_dir size option
63 void validateOptions(); ///< warns of configuration problems; may quit
65 void rebuild(); ///< starts loading and validating stored entry metadata
66 ///< used to add entries successfully loaded during rebuild
67 bool addEntry(const int fileno
, const DbCellHeader
&header
, const StoreEntry
&from
);
69 bool full() const; ///< no more entries can be stored without purging
70 void trackReferences(StoreEntry
&e
); ///< add to replacement policy scope
71 void ignoreReferences(StoreEntry
&e
); ///< delete from repl policy scope
73 int64_t diskOffset(int filen
) const;
74 int64_t diskOffsetLimit() const;
75 int entryLimit() const { return map
->entryLimit(); }
78 const char *filePath
; ///< location of cache storage file inside path/
82 RefCount
<DiskFile
> theFile
; ///< cache storage for this cache_dir
85 static const int64_t HeaderSize
; ///< on-disk db header size
90 #endif /* SQUID_FS_ROCK_SWAP_DIR_H */