stmem.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 #ifndef SQUID_SRC_STMEM_H
10 #define SQUID_SRC_STMEM_H
11 
12 #include "base/Range.h"
13 #include "splay.h"
14 
15 class mem_node;
16 
17 class StoreIOBuffer;
18 
19 class mem_hdr
20 {
21 
22 public:
23  mem_hdr();
24  ~mem_hdr();
25  void freeContent();
26  int64_t lowestOffset () const;
27  int64_t endOffset () const;
28  int64_t freeDataUpto (int64_t);
29  ssize_t copy (StoreIOBuffer const &) const;
30  bool hasContigousContentRange(Range<int64_t> const &range) const;
31  /* success or fail */
32  bool write (StoreIOBuffer const &);
33  void dump() const;
34  size_t size() const;
35  mem_node *getBlockContainingLocation (int64_t location) const;
36  /* access the contained nodes - easier than punning
37  * as a container ourselves
38  */
39  const Splay<mem_node *> &getNodes() const;
40  char * NodeGet(mem_node * aNode);
41 
43 
44 private:
45  void debugDump() const;
46  bool unlink(mem_node *aNode);
47  void appendNode (mem_node *aNode);
48  size_t copyAvailable(mem_node *aNode, int64_t location, size_t amount, char *target) const;
49  bool unionNotEmpty (StoreIOBuffer const &);
50  mem_node *nodeToRecieve(int64_t offset);
51  size_t writeAvailable(mem_node *aNode, int64_t location, size_t amount, char const *source);
52  int64_t inmem_hi;
54 };
55 
56 #endif /* SQUID_SRC_STMEM_H */
57 
int64_t freeDataUpto(int64_t)
Definition: stmem.cc:81
Splay< mem_node * > nodes
Definition: stmem.h:53
static Splay< mem_node * >::SPLAYCMP NodeCompare
Definition: stmem.h:42
bool unionNotEmpty(StoreIOBuffer const &)
Definition: stmem.cc:260
int64_t inmem_hi
Definition: stmem.h:52
void appendNode(mem_node *aNode)
Definition: stmem.cc:128
mem_node * nodeToRecieve(int64_t offset)
Definition: stmem.cc:269
char * NodeGet(mem_node *aNode)
Definition: stmem.cc:26
size_t size() const
Definition: stmem.cc:366
bool write(StoreIOBuffer const &)
Definition: stmem.cc:303
const Splay< mem_node * > & getNodes() const
Definition: stmem.cc:372
int64_t endOffset() const
Definition: stmem.cc:45
Definition: Range.h:18
size_t writeAvailable(mem_node *aNode, int64_t location, size_t amount, char const *source)
Definition: stmem.cc:102
mem_node * getBlockContainingLocation(int64_t location) const
Definition: stmem.cc:137
int64_t lowestOffset() const
Definition: stmem.cc:34
Definition: stmem.h:19
mem_hdr()
Definition: stmem.cc:332
void dump() const
Definition: stmem.cc:359
~mem_hdr()
Definition: stmem.cc:337
void debugDump() const
Definition: stmem.cc:170
void freeContent()
Definition: stmem.cc:59
bool unlink(mem_node *aNode)
Definition: stmem.cc:67
size_t copyAvailable(mem_node *aNode, int64_t location, size_t amount, char *target) const
Definition: stmem.cc:151
ssize_t copy(StoreIOBuffer const &) const
Definition: stmem.cc:187
bool hasContigousContentRange(Range< int64_t > const &range) const
Definition: stmem.cc:245

 

Introduction

Documentation

Support

Miscellaneous