[cache_check] mapping damage reporter

This commit is contained in:
Joe Thornber
2013-10-08 09:36:20 +01:00
parent 96143f0bed
commit 81a72c8a35
3 changed files with 66 additions and 10 deletions

View File

@ -28,12 +28,10 @@ mapping_traits::pack(value_type const &value, disk_type &disk)
//----------------------------------------------------------------
missing_mappings::missing_mappings(run<uint32_t> const &keys,
std::string const &desc)
: keys_(keys),
desc_(desc)
missing_mappings::missing_mappings(std::string const &desc, run<uint32_t> const &keys)
: damage(desc),
keys_(keys)
{
}
void
@ -42,6 +40,20 @@ missing_mappings::visit(damage_visitor &v) const
v.visit(*this);
}
invalid_mapping::invalid_mapping(std::string const &desc,
block_address cblock, mapping const &m)
: damage(desc),
cblock_(cblock),
m_(m)
{
}
void
invalid_mapping::visit(damage_visitor &v) const
{
v.visit(*this);
}
namespace {
struct no_op_visitor {
virtual void visit(uint32_t index,
@ -56,7 +68,7 @@ namespace {
}
virtual void visit(array_detail::damage const &d) {
v_.visit(missing_mappings(d.lost_keys_, d.desc_));
v_.visit(missing_mappings(d.desc_, d.lost_keys_));
}
private: