blob: d9a112b1a13500ade7e1e60640f897f2134d5218 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstddef>
#include <iosfwd>
namespace vespalib {
/**
* Represents an address space with number of bytes/entries used
* and the limit number of bytes/entries this address space can represent.
*/
class AddressSpace
{
private:
size_t _used;
size_t _dead;
size_t _limit;
public:
AddressSpace();
AddressSpace(size_t used_, size_t dead_, size_t limit_);
size_t used() const { return _used; }
size_t dead() const { return _dead; }
size_t limit() const { return _limit; }
double usage() const {
if (_limit > 0) {
return (double)(_used - _dead) / (double)_limit;
}
return 0;
}
bool operator==(const AddressSpace &rhs) const {
return _used == rhs._used && _dead == rhs._dead && _limit == rhs._limit;
}
};
std::ostream &operator << (std::ostream &out, const AddressSpace &rhs);
}
|