superblock damage visitor

This commit is contained in:
Joe Thornber
2013-05-21 14:01:17 +01:00
parent 24ddc4f5c4
commit 6fcda37dbc
4 changed files with 61 additions and 3 deletions

View File

@@ -93,9 +93,37 @@ namespace thin_provisioning {
block_address const SUPERBLOCK_LOCATION = 0;
uint32_t const SUPERBLOCK_MAGIC = 27022010;
//--------------------------------
class damage_visitor;
struct damage {
virtual ~damage() {}
virtual void visit(damage_visitor &v) const = 0;
};
struct superblock_corruption : public damage {
superblock_corruption(std::string const &desc);
void visit(damage_visitor &v) const;
std::string desc_;
};
class damage_visitor {
public:
virtual ~damage_visitor() {}
void visit(damage const &d);
virtual void visit(superblock_corruption const &d) = 0;
};
}
block_manager<>::validator::ptr superblock_validator();
void check_superblock(block_manager<>::ptr bm,
superblock_detail::damage_visitor &visitor);
}
//----------------------------------------------------------------