#include "era/xml_format.h" using namespace boost; using namespace era; using namespace persistent_data; using namespace std; //---------------------------------------------------------------- namespace { class xml_emitter : public emitter { public: xml_emitter(ostream &out) : out_(out), indent_(0) { } void begin_superblock(std::string const &uuid, uint32_t block_size, pd::block_address nr_blocks, uint32_t current_era) { indent(); out_ << "" << endl; inc(); } void end_superblock() { dec(); indent(); out_ << "" << endl; } void begin_writeset(uint32_t era, uint32_t nr_bits) { indent(); out_ << "" << endl; inc(); } void writeset_bit(uint32_t bit, bool value) { indent(); // FIXME: collect all the bits, then uuencode out_ << "" << endl; } void end_writeset() { dec(); indent(); out_ << "" << endl; } void begin_era_array() { indent(); out_ << "" << endl; inc(); } void era(pd::block_address block, uint32_t era) { indent(); out_ << "" << endl; } void end_era_array() { dec(); indent(); out_ << "" << endl; } private: // FIXME: factor out a common class with the thin_provisioning emitter void indent() { for (unsigned i = 0; i < indent_ * 2; i++) out_ << ' '; } void inc() { indent_++; } void dec() { indent_--; } ostream &out_; unsigned indent_; }; } //---------------------------------------------------------------- emitter::ptr era::create_xml_emitter(std::ostream &out) { return emitter::ptr(new xml_emitter(out)); } //----------------------------------------------------------------