]> git.ipfire.org Git - thirdparty/squid.git/blob - src/mem_node.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / mem_node.h
1 /*
2 * Copyright (C) 1996-2017 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_MEM_NODE_H
10 #define SQUID_MEM_NODE_H
11
12 #include "defines.h"
13 #include "mem/forward.h"
14 #include "Range.h"
15 #include "StoreIOBuffer.h"
16
17 class mem_node
18 {
19 MEMPROXY_CLASS(mem_node);
20
21 public:
22 static size_t InUseCount();
23 static size_t StoreMemSize();
24
25 mem_node(int64_t);
26 ~mem_node();
27 size_t space() const;
28 int64_t start() const;
29 int64_t end() const;
30 Range<int64_t> dataRange() const;
31 bool contains (int64_t const &location) const;
32 bool canAccept (int64_t const &location) const;
33 bool operator < (mem_node const & rhs) const;
34 /* public */
35 StoreIOBuffer nodeBuffer;
36 /* Private */
37 char data[SM_PAGE_SIZE];
38 bool write_pending;
39 };
40
41 inline std::ostream &
42 operator << (std::ostream &os, mem_node &aNode)
43 {
44 os << aNode.nodeBuffer.range();
45 return os;
46 }
47
48 void memNodeWriteComplete(void *);
49
50 #endif /* SQUID_MEM_NODE_H */
51