ewmscp  ..
block.h
Go to the documentation of this file.
1 #ifndef __block_h__
2 #define __block_h__
3 #include <sys/types.h>
7 class block {
8  void *buffer;
9  size_t bytes;
10  size_t blockSize;
11  size_t startOffset;
12  bool hole;
13  public:
14  explicit block(size_t aBlockSize);
15  ~block();
16  size_t size() const {
17  return bytes;
18  }
19  bool empty() const {
20  return bytes == 0;
21  }
22  size_t max_size() const {
23  return blockSize;
24  }
25  size_t offset() const {
26  return startOffset;
27  }
28  void clear(size_t aOffset) {
29  startOffset = aOffset;
30  bytes = 0;
31  hole = false;
32  }
33  void bump_size(size_t additionalBytes) {
34  bytes += additionalBytes;
35  }
36  bool isHole() const {
37  return hole;
38  }
39  void setHoleState(bool holeState) {
40  hole = holeState;
41  }
42  void *bufferAt(size_t offset);
43  const void *bufferAt(size_t offset) const;
44  static const void* nullBuffer();
45  static size_t nullBufferSize();
46 };
47 #endif
block::startOffset
size_t startOffset
offset in the file that is represented by this block
Definition: block.h:11
block::max_size
size_t max_size() const
Definition: block.h:22
block::offset
size_t offset() const
Definition: block.h:25
block::nullBuffer
static const void * nullBuffer()
Definition: block.cpp:37
block::bytes
size_t bytes
number of bytes actually stored here
Definition: block.h:9
block::bump_size
void bump_size(size_t additionalBytes)
Definition: block.h:33
block::blockSize
size_t blockSize
capacity of the block
Definition: block.h:10
block::isHole
bool isHole() const
Definition: block.h:36
block::setHoleState
void setHoleState(bool holeState)
Definition: block.h:39
block::bufferAt
void * bufferAt(size_t offset)
only way to access the data in the block
Definition: block.cpp:28
block
data block, used to hold the data that are being copied (or checksummed).
Definition: block.h:7
block::buffer
void * buffer
Definition: block.h:8
block::nullBufferSize
static size_t nullBufferSize()
Definition: block.cpp:34
block::size
size_t size() const
Definition: block.h:16
block::empty
bool empty() const
Definition: block.h:19
block::clear
void clear(size_t aOffset)
Definition: block.h:28
block::hole
bool hole
represents a hole in the file with bytes bytes.
Definition: block.h:12
block::~block
~block()
Definition: block.cpp:18
block::block
block(size_t aBlockSize)
Allocate block via mmap to ensure proper alignment along page borders, needed for efficient read/writ...
Definition: block.cpp:8