]>
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/RockDirMap.h"
18 class SwapDir
: public ::SwapDir
, public IORequestor
24 /* public ::SwapDir API */
25 virtual void reconfigure(int, char *);
26 virtual StoreSearch
*search(String
const url
, HttpRequest
*);
27 virtual StoreEntry
*get(const cache_key
*key
);
28 virtual void disconnect(StoreEntry
&e
);
31 /* protected ::SwapDir API */
32 virtual bool needsDiskStrand() const;
33 virtual void create();
35 virtual int canStore(StoreEntry
const &) const;
36 virtual StoreIOState::Pointer
createStoreIO(StoreEntry
&, StoreIOState::STFNCB
*, StoreIOState::STIOCB
*, void *);
37 virtual StoreIOState::Pointer
openStoreIO(StoreEntry
&, StoreIOState::STFNCB
*, StoreIOState::STIOCB
*, void *);
38 virtual void maintain();
39 virtual void updateSize(int64_t size
, int sign
);
40 virtual void diskFull();
41 virtual void reference(StoreEntry
&e
);
42 virtual void dereference(StoreEntry
&e
);
43 virtual void unlink(StoreEntry
&e
);
44 virtual void statfs(StoreEntry
&e
) const;
47 virtual void ioCompletedNotification();
48 virtual void closeCompleted();
49 virtual void readCompleted(const char *buf
, int len
, int errflag
, RefCount
< ::ReadRequest
>);
50 virtual void writeCompleted(int errflag
, size_t len
, RefCount
< ::WriteRequest
>);
52 virtual void parse(int index
, char *path
);
53 void parseSize(); ///< parses anonymous cache_dir size option
54 void validateOptions(); ///< warns of configuration problems; may quit
56 void rebuild(); ///< starts loading and validating stored entry metadata
57 ///< used to add entries successfully loaded during rebuild
58 bool addEntry(const int fileno
, const StoreEntry
&from
);
60 bool full() const; ///< no more entries can be stored without purging
61 void trackReferences(StoreEntry
&e
); ///< add to replacement policy scope
62 void ignoreReferences(StoreEntry
&e
); ///< delete from repl policy scope
64 // TODO: change cur_size and max_size type to stop this madness
65 int64_t currentSize() const { return static_cast<int64_t>(cur_size
) << 10;}
66 int64_t maximumSize() const { return static_cast<int64_t>(max_size
) << 10;}
67 int64_t diskOffset(int filen
) const;
68 int64_t diskOffsetLimit() const;
69 int entryLimit() const { return map
->entryLimit(); }
72 const char *filePath
; ///< location of cache storage file inside path/
76 RefCount
<DiskFile
> theFile
; ///< cache storage for this cache_dir
79 static const int64_t HeaderSize
; ///< on-disk db header size
84 #endif /* SQUID_FS_ROCK_SWAP_DIR_H */