]> git.ipfire.org Git - thirdparty/squid.git/blob - src/StoreIOBuffer.h
Docs: Copyright updates for 2018 (#114)
[thirdparty/squid.git] / src / StoreIOBuffer.h
1 /*
2 * Copyright (C) 1996-2018 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_STOREIOBUFFER_H
10 #define SQUID_STOREIOBUFFER_H
11
12 #include "base/Range.h"
13 #include "MemBuf.h"
14
15 class StoreIOBuffer
16 {
17
18 public:
19 StoreIOBuffer():length(0), offset (0), data (NULL) {flags.error = 0;}
20
21 StoreIOBuffer(size_t aLength, int64_t anOffset, char *someData) :
22 length (aLength), offset (anOffset), data (someData) {
23 flags.error = 0;
24 }
25
26 /* Create a StoreIOBuffer from a MemBuf and offset */
27 /* NOTE that MemBuf still "owns" the pointers, StoreIOBuffer is just borrowing them */
28 StoreIOBuffer(MemBuf *aMemBuf, int64_t anOffset) :
29 length(aMemBuf->contentSize()),
30 offset (anOffset),
31 data(aMemBuf->content()) {
32 flags.error = 0;
33 }
34
35 StoreIOBuffer(MemBuf *aMemBuf, int64_t anOffset, size_t anLength) :
36 length(anLength),
37 offset (anOffset),
38 data(aMemBuf->content()) {
39 flags.error = 0;
40 }
41
42 Range<int64_t> range() const {
43 return Range<int64_t>(offset, offset + length);
44 }
45
46 void dump() const {
47 if (fwrite(data, length, 1, stderr)) {}
48 if (fwrite("\n", 1, 1, stderr)) {}
49 }
50
51 struct {
52 unsigned error:1;
53 } flags;
54 size_t length;
55 int64_t offset;
56 char *data;
57 };
58
59 inline
60 std::ostream &
61 operator <<(std::ostream &os, const StoreIOBuffer &b)
62 {
63 return os << "ioBuf(@" << b.offset << ", len=" << b.length << ", " <<
64 (void*)b.data << (b.flags.error ? ", ERR" : "") << ')';
65 }
66
67 #endif /* SQUID_STOREIOBUFFER_H */
68