]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/stmem.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / stmem.h
index 89f398b53c7e9b87e8b4f6d9df8078097a3473b7..e67e4d360abf7d1e196d5d6565bd2f3a4a4d33a1 100644 (file)
@@ -1,7 +1,5 @@
 
 /*
- * $Id: stmem.h,v 1.3 2003/06/24 12:30:59 robertc Exp $
- *
  *
  * SQUID Web Proxy Cache          http://www.squid-cache.org/
  * ----------------------------------------------------------
  *  it under the terms of the GNU General Public License as published by
  *  the Free Software Foundation; either version 2 of the License, or
  *  (at your option) any later version.
- *  
+ *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU General Public License for more details.
- *  
+ *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
  *
+ * Copyright (c) 2003, Robert Collins <robertc@squid-cache.org>
  */
 
 #ifndef SQUID_STMEM_H
 #define SQUID_STMEM_H
 
-#include "splay.h"
 #include "Range.h"
+#include "splay.h"
 
 class mem_node;
 
@@ -48,32 +47,41 @@ public:
     mem_hdr();
     ~mem_hdr();
     void freeContent();
-    int lowestOffset () const;
-    off_t endOffset () const;
-    int freeDataUpto (int);
-    ssize_t copy (off_t, char *, size_t) const;
-    bool hasContigousContentRange(Range<size_t> const &range) const;
+    int64_t lowestOffset () const;
+    int64_t endOffset () const;
+    int64_t freeDataUpto (int64_t);
+    ssize_t copy (StoreIOBuffer const &) const;
+    bool hasContigousContentRange(Range<int64_t> const &range) const;
     /* success or fail */
     bool write (StoreIOBuffer const &);
+    void dump() const;
+    size_t size() const;
+    /* Not an iterator - thus the start, not begin() */
+    mem_node const *start() const;
+    mem_node *getBlockContainingLocation (int64_t location) const;
+    /* access the contained nodes - easier than punning
+     * as a contianer ourselves
+     */
+    const Splay<mem_node *> &getNodes() const;
+    char * NodeGet(mem_node * aNode);
 
     /* Only for use of MemObject */
     void internalAppend(const char *data, int len);
-    mem_node *head;
-    mem_node *tail;
+
+    static SplayNode<mem_node *>::SPLAYCMP NodeCompare;
 
 private:
-    void unlinkHead();
+    void debugDump() const;
+    bool unlink(mem_node *aNode);
     void makeAppendSpace();
     int appendToNode(mem_node *aNode, const char *data, int maxLength);
     void appendNode (mem_node *aNode);
-    mem_node *getBlockContainingLocation (size_t location) const;
-    size_t copyAvailable(mem_node *aNode, size_t location, size_t amount, char *target) const;
+    size_t copyAvailable(mem_node *aNode, int64_t location, size_t amount, char *target) const;
     bool unionNotEmpty (StoreIOBuffer const &);
-    mem_node *getHighestBlockBeforeLocation (size_t location) const;
-    mem_node *nodeToRecieve(off_t offset);
-    size_t writeAvailable(mem_node *aNode, size_t location, size_t amount, char const *source);
-    off_t inmem_hi;
-    Splay<mem_node> nodes;
+    mem_node *nodeToRecieve(int64_t offset);
+    size_t writeAvailable(mem_node *aNode, int64_t location, size_t amount, char const *source);
+    int64_t inmem_hi;
+    Splay<mem_node *> nodes;
 };
 
 #endif /* SQUID_STMEM_H */