diff --git a/repos/os/src/server/part_block/gpt.h b/repos/os/src/server/part_block/gpt.h index 4134fea259..e305a44215 100644 --- a/repos/os/src/server/part_block/gpt.h +++ b/repos/os/src/server/part_block/gpt.h @@ -348,9 +348,9 @@ class Block::Gpt : public Block::Partition_table } /* Report the partitions */ - if (reporter.enabled()) + if (reporter.constructed()) { - Reporter::Xml_generator xml(reporter, [&] () { + reporter->generate([&] (Xml_generator &xml) { xml.attribute("type", "gpt"); uint64_t const total_blocks = block.info().block_count; diff --git a/repos/os/src/server/part_block/main.cc b/repos/os/src/server/part_block/main.cc index d5eca0ad5a..a60bba4efc 100644 --- a/repos/os/src/server/part_block/main.cc +++ b/repos/os/src/server/part_block/main.cc @@ -212,8 +212,8 @@ class Block::Main : Rpc_object>, Attached_rom_dataspace _config { _env, "config" }; - Heap _heap { _env.ram(), _env.rm() }; - Reporter _reporter { _env, "partitions" }; + Heap _heap { _env.ram(), _env.rm() }; + Constructible _reporter { }; Number_of_bytes const _io_buffer_size = _config.xml().attribute_value("io_buffer", @@ -498,7 +498,7 @@ Block::Partition_table & Block::Main::_table() report = _config.xml().sub_node("report").attribute_value ("partitions", false); if (report) - _reporter.enabled(true); + _reporter.construct(_env, "partitions", "partitions"); } catch(...) {} /* diff --git a/repos/os/src/server/part_block/mbr.h b/repos/os/src/server/part_block/mbr.h index 65ebabb4fe..a4ec695c60 100644 --- a/repos/os/src/server/part_block/mbr.h +++ b/repos/os/src/server/part_block/mbr.h @@ -215,7 +215,7 @@ struct Block::Mbr_partition_table : public Block::Partition_table Partition(0, (block_count_t)(block.info().block_count - 1))); /* report the partitions */ - if (reporter.enabled()) { + if (reporter.constructed()) { auto gen_partition_attr = [&] (Xml_generator &xml, unsigned i) { @@ -238,7 +238,7 @@ struct Block::Mbr_partition_table : public Block::Partition_table xml.attribute("file_system", fs_type); }; - Reporter::Xml_generator xml(reporter, [&] () { + reporter->generate([&] (Xml_generator &xml) { xml.attribute("type", mbr_valid ? "mbr" : ahdi_valid ? "ahdi" : diff --git a/repos/os/src/server/part_block/partition_table.h b/repos/os/src/server/part_block/partition_table.h index a9896c2e01..faa2b90ce9 100644 --- a/repos/os/src/server/part_block/partition_table.h +++ b/repos/os/src/server/part_block/partition_table.h @@ -152,10 +152,10 @@ struct Block::Partition_table : Interface return reinterpret_cast(_buffer); } }; - Env &env; - Block_connection █ - Reporter &reporter; - Sector_data data; + Env &env; + Block_connection █ + Constructible &reporter; + Sector_data data; Io_signal_handler io_sigh { env.ep(), *this, &Partition_table::handle_io }; @@ -165,10 +165,10 @@ struct Block::Partition_table : Interface if (data.current) { data.current->handle_io(); } } - Partition_table(Env &env, - Block_connection &block, - Allocator &alloc, - Reporter &r) + Partition_table(Env &env, + Block_connection &block, + Allocator &alloc, + Constructible &r) : env(env), block(block), reporter(r), data(env, block, alloc) { }