Skip to content
API Documentation
BastionGuard™
bad_block_map.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <vector>
5
6enum class RangeState {
10};
11
12struct BlockRange {
13 uint64_t offset {0};
14 uint64_t length {0};
16};
17
19public:
20 void mark_readable(uint64_t offset, uint64_t length);
21 void mark_bad(uint64_t offset, uint64_t length);
22 void mark_slow(uint64_t offset, uint64_t length);
23
24 std::vector<BlockRange> readable_ranges() const;
25 std::vector<BlockRange> bad_ranges() const;
26 std::vector<BlockRange> slow_ranges() const;
27
28 bool is_known_bad(uint64_t offset, uint64_t length) const;
29 void merge_adjacent();
30
31private:
32 void mark(uint64_t offset, uint64_t length, RangeState state);
33 std::vector<BlockRange> filtered(RangeState state) const;
34
35 std::vector<BlockRange> ranges_;
36};
RangeState
bool is_known_bad(uint64_t offset, uint64_t length) const
std::vector< BlockRange > readable_ranges() const
std::vector< BlockRange > bad_ranges() const
void mark(uint64_t offset, uint64_t length, RangeState state)
std::vector< BlockRange > ranges_
void merge_adjacent()
std::vector< BlockRange > slow_ranges() const
std::vector< BlockRange > filtered(RangeState state) const
void mark_readable(uint64_t offset, uint64_t length)
void mark_slow(uint64_t offset, uint64_t length)
void mark_bad(uint64_t offset, uint64_t length)
uint64_t length
uint64_t offset
RangeState state