]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/fs/coss/CossSwapDir.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / fs / coss / CossSwapDir.h
index fdbda43fc5f7fd2e3e11db852697cafff7f620f9..7f399f62fe97daabebee06846bc8debc083f025a 100644 (file)
@@ -1,8 +1,16 @@
 #ifndef __COSSSWAPDIR_H__
 #define __COSSSWAPDIR_H__
 
+class StoreEntry;
+class CossSwapDir;
+class CossMemBuf;
+class DiskIOStrategy;
+class DiskIOModule;
+class ConfigOptionVector;
+class DiskFile;
+
 #include "SwapDir.h"
-#include "StoreSearch.h"
+#include "DiskIO/IORequestor.h"
 
 #ifndef COSS_MEMBUF_SZ
 #define        COSS_MEMBUF_SZ  1048576
 #define COSS_ALLOC_ALLOCATE            1
 #define COSS_ALLOC_REALLOC             2
 
-class CossSwapDir;
-
-
-class CossMemBuf;
-
-class DiskIOStrategy;
-
-class DiskIOModule;
-
-class ConfigOptionVector;
-#include "DiskIO/DiskFile.h"
-#include "DiskIO/IORequestor.h"
-
+/// \ingroup COSS
 class CossSwapDir : public SwapDir, public IORequestor
 {
 
@@ -37,9 +33,10 @@ public:
     virtual void dump(StoreEntry &)const;
     ~CossSwapDir();
     virtual StoreSearch *search(String const url, HttpRequest *);
+    virtual bool unlinkdUseful() const;
     virtual void unlink (StoreEntry &);
     virtual void statfs (StoreEntry &)const;
-    virtual int canStore(StoreEntry const &)const;
+    virtual bool canStore(const StoreEntry &e, int64_t diskSpaceNeeded, int &load) const;
     virtual int callback();
     virtual void sync();
     virtual StoreIOState::Pointer createStoreIO(StoreEntry &, StoreIOState::STFNCB *, StoreIOState::STIOCB *, void *);
@@ -50,7 +47,10 @@ public:
     virtual void writeCleanDone();
     virtual void logEntry(const StoreEntry & e, int op) const;
     virtual void parse (int index, char *path);
-    virtual void reconfigure (int, char *);
+    virtual void reconfigure();
+    virtual void swappedOut(const StoreEntry &e);
+    virtual uint64_t currentSize() const { return cur_size; }
+    virtual uint64_t currentCount() const { return n_disk_objects; }
     /* internals */
     virtual off_t storeCossFilenoToDiskOffset(sfileno);
     virtual sfileno storeCossDiskOffsetToFileno(off_t);
@@ -66,18 +66,28 @@ public:
     dlink_list membufs;
 
     CossMemBuf *current_membuf;
-    size_t current_offset;     /* in Blocks */
+    off_t current_offset;      /* in Blocks */
     int numcollisions;
     dlink_list cossindex;
     unsigned int blksz_bits;
     unsigned int blksz_mask;  /* just 1<<blksz_bits - 1*/
     DiskIOStrategy *io;
     RefCount<DiskFile> theFile;
-    char *storeCossMemPointerFromDiskOffset(size_t offset, CossMemBuf ** mb);
+    char *storeCossMemPointerFromDiskOffset(off_t offset, CossMemBuf ** mb);
     void storeCossMemBufUnlock(StoreIOState::Pointer);
-    CossMemBuf *createMemBuf(size_t start, sfileno curfn, int *collision);
+    CossMemBuf *createMemBuf(off_t start, sfileno curfn, int *collision);
     sfileno allocate(const StoreEntry * e, int which);
     void startMembuf();
+    StoreEntry *addDiskRestore(const cache_key *const key,
+                               int file_number,
+                               uint64_t swap_file_sz,
+                               time_t expires,
+                               time_t timestamp,
+                               time_t lastref,
+                               time_t lastmod,
+                               uint32_t refcount,
+                               uint16_t flags,
+                               int clean);
 
 private:
     void changeIO(DiskIOModule *module);
@@ -90,12 +100,20 @@ private:
     const char *ioModule;
     mutable ConfigOptionVector *currentIOOptions;
     const char *stripe_path;
+    uint64_t cur_size; ///< currently used space in the storage area
+    uint64_t n_disk_objects; ///< total number of objects stored
 };
 
+/// \ingroup COSS
 extern void storeCossAdd(CossSwapDir *, StoreEntry *);
+/// \ingroup COSS
 extern void storeCossRemove(CossSwapDir *, StoreEntry *);
+/// \ingroup COSS
 extern void storeCossStartMembuf(CossSwapDir * SD);
 
+#include "StoreSearch.h"
+
+/// \ingroup COSS
 class StoreSearchCoss : public StoreSearch
 {
 
@@ -105,7 +123,7 @@ public:
     ~StoreSearchCoss();
     /* Iterator API - garh, wrong place */
     /* callback the client when a new StoreEntry is available
-     * or an error occurs 
+     * or an error occurs
      */
     virtual void next(void (callback)(void *cbdata), void *cbdata);
     /* return true if a new StoreEntry is immediately available */
@@ -115,13 +133,14 @@ public:
     virtual StoreEntry *currentItem();
 
 private:
-    CBDATA_CLASS2(StoreSearchCoss);
     RefCount<CossSwapDir> sd;
     void (*callback)(void *cbdata);
     void *cbdata;
     bool _done;
     dlink_node * current;
     dlink_node * next_;
+
+    CBDATA_CLASS2(StoreSearchCoss);
 };
 
 #endif