]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/fs/coss/CossSwapDir.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / fs / coss / CossSwapDir.h
index b00b13d10e76ce57f19bdc4a330d0fe2c4e2e241..7f399f62fe97daabebee06846bc8debc083f025a 100644 (file)
@@ -12,7 +12,6 @@ class DiskFile;
 #include "SwapDir.h"
 #include "DiskIO/IORequestor.h"
 
-
 #ifndef COSS_MEMBUF_SZ
 #define        COSS_MEMBUF_SZ  1048576
 #endif
@@ -23,7 +22,6 @@ class DiskFile;
 #define COSS_ALLOC_ALLOCATE            1
 #define COSS_ALLOC_REALLOC             2
 
-
 /// \ingroup COSS
 class CossSwapDir : public SwapDir, public IORequestor
 {
@@ -35,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 *);
@@ -48,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);
@@ -76,6 +78,16 @@ public:
     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);
@@ -88,6 +100,8 @@ 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
@@ -97,7 +111,6 @@ extern void storeCossRemove(CossSwapDir *, StoreEntry *);
 /// \ingroup COSS
 extern void storeCossStartMembuf(CossSwapDir * SD);
 
-
 #include "StoreSearch.h"
 
 /// \ingroup COSS
@@ -120,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