diff --git a/repos/gems/include/dialog/runtime.h b/repos/gems/include/dialog/runtime.h index a6b0d19044..992ad8ea58 100644 --- a/repos/gems/include/dialog/runtime.h +++ b/repos/gems/include/dialog/runtime.h @@ -62,8 +62,7 @@ class Dialog::Runtime : private Sandbox::State_handler Buffered_xml const config { _alloc, "config", [&] (Xml_generator &xml) { _generate_sandbox_config(xml); } }; - config.with_xml_node([&] (Xml_node const &config) { - _sandbox.apply_config(config); }); + _sandbox.apply_config(config.xml); } /** @@ -77,9 +76,8 @@ class Dialog::Runtime : private Sandbox::State_handler bool reconfiguration_needed = false; - state.with_xml_node([&] (Xml_node state) { - if (_runtime.apply_sandbox_state(state)) - reconfiguration_needed = true; }); + if (_runtime.apply_sandbox_state(state.xml)) + reconfiguration_needed = true; if (reconfiguration_needed) _update_sandbox_config(); diff --git a/repos/gems/src/app/decorator/config.h b/repos/gems/src/app/decorator/config.h index 29e9428788..4b579a1856 100644 --- a/repos/gems/src/app/decorator/config.h +++ b/repos/gems/src/app/decorator/config.h @@ -167,7 +167,7 @@ class Decorator::Config Color result = Color::rgb(68, 75, 95); try { - Genode::Session_policy policy(title, _buffered_config->xml()); + Genode::Session_policy policy(title, _buffered_config->xml); result = policy.attribute_value("color", result); } catch (Genode::Session_policy::No_policy_defined) { } @@ -181,10 +181,10 @@ class Decorator::Config unsigned gradient_percent(Window_title const &title) const { unsigned result = - _buffered_config->xml().attribute_value("gradient", 32U); + _buffered_config->xml.attribute_value("gradient", 32U); try { - Genode::Session_policy policy(title, _buffered_config->xml()); + Genode::Session_policy policy(title, _buffered_config->xml); result = policy.attribute_value("gradient", result); } catch (Genode::Session_policy::No_policy_defined) { } diff --git a/repos/gems/src/app/depot_autopilot/child.cc b/repos/gems/src/app/depot_autopilot/child.cc index 838174a1c6..011d646be5 100644 --- a/repos/gems/src/app/depot_autopilot/child.cc +++ b/repos/gems/src/app/depot_autopilot/child.cc @@ -260,12 +260,12 @@ void Child::gen_start_node(Xml_generator &xml, if (_defined_by_launcher() && !_launcher_xml.constructed()) return; - if (!_pkg_xml->xml().has_sub_node("runtime")) { + if (!_pkg_xml->xml.has_sub_node("runtime")) { warning("blueprint for '", _name, "' lacks runtime information"); return; } - Xml_node const runtime = _pkg_xml->xml().sub_node("runtime"); + Xml_node const runtime = _pkg_xml->xml.sub_node("runtime"); xml.node("start", [&] () { @@ -273,13 +273,13 @@ void Child::gen_start_node(Xml_generator &xml, unsigned long caps = _pkg_cap_quota; if (_defined_by_launcher()) - caps = _launcher_xml->xml().attribute_value("caps", caps); - caps = _start_xml->xml().attribute_value("caps", caps); + caps = _launcher_xml->xml.attribute_value("caps", caps); + caps = _start_xml->xml.attribute_value("caps", caps); xml.attribute("caps", caps); using Version = String<64>; - Version const version = _start_xml->xml().attribute_value("version", Version()); + Version const version = _start_xml->xml.attribute_value("version", Version()); if (version.valid()) xml.attribute("version", version); @@ -287,8 +287,8 @@ void Child::gen_start_node(Xml_generator &xml, Number_of_bytes ram = _pkg_ram_quota; if (_defined_by_launcher()) - ram = _launcher_xml->xml().attribute_value("ram", ram); - ram = _start_xml->xml().attribute_value("ram", ram); + ram = _launcher_xml->xml.attribute_value("ram", ram); + ram = _start_xml->xml.attribute_value("ram", ram); xml.node("resource", [&] () { xml.attribute("name", "RAM"); @@ -300,11 +300,11 @@ void Child::gen_start_node(Xml_generator &xml, * the launcher definition (if a launcher is user), or the * blueprint. The former is preferred over the latter. */ - if (_start_xml->xml().has_sub_node("config")) { - _gen_copy_of_sub_node(xml, _start_xml->xml(), "config"); + if (_start_xml->xml.has_sub_node("config")) { + _gen_copy_of_sub_node(xml, _start_xml->xml, "config"); } else { - if (_defined_by_launcher() && _launcher_xml->xml().has_sub_node("config")) { - _gen_copy_of_sub_node(xml, _launcher_xml->xml(), "config"); + if (_defined_by_launcher() && _launcher_xml->xml.has_sub_node("config")) { + _gen_copy_of_sub_node(xml, _launcher_xml->xml, "config"); } else { if (runtime.has_sub_node("config")) _gen_copy_of_sub_node(xml, runtime, "config"); @@ -343,7 +343,7 @@ void Child::gen_start_node(Xml_generator &xml, uint64_t max_timeout_sec = 0; try { - Xml_node const runtime = _pkg_xml->xml().sub_node("runtime"); + Xml_node const runtime = _pkg_xml->xml.sub_node("runtime"); /* * The check for the node is made only for compatibility with @@ -428,8 +428,8 @@ void Child::_gen_routes(Xml_generator &xml, /* * Add routes given in the start node. */ - if (_start_xml->xml().has_sub_node("route")) { - Xml_node const route = _start_xml->xml().sub_node("route"); + if (_start_xml->xml.has_sub_node("route")) { + Xml_node const route = _start_xml->xml.sub_node("route"); route.with_raw_content([&] (char const *start, size_t length) { xml.append(start, length); }); } @@ -437,8 +437,8 @@ void Child::_gen_routes(Xml_generator &xml, /* * Add routes given in the launcher definition. */ - if (_launcher_xml.constructed() && _launcher_xml->xml().has_sub_node("route")) { - Xml_node const route = _launcher_xml->xml().sub_node("route"); + if (_launcher_xml.constructed() && _launcher_xml->xml.has_sub_node("route")) { + Xml_node const route = _launcher_xml->xml.sub_node("route"); route.with_raw_content([&] (char const *start, size_t length) { xml.append(start, length); }); } @@ -462,7 +462,7 @@ void Child::_gen_routes(Xml_generator &xml, * within the depot. */ if (_config_name.valid()) { - _pkg_xml->xml().for_each_sub_node("rom", [&] (Xml_node rom) { + _pkg_xml->xml.for_each_sub_node("rom", [&] (Xml_node rom) { if (!rom.has_attribute("path")) return; @@ -498,7 +498,7 @@ void Child::_gen_routes(Xml_generator &xml, * Add ROM routing rule with the label rewritten to the path within the * depot. */ - _pkg_xml->xml().for_each_sub_node("rom", [&] (Xml_node rom) { + _pkg_xml->xml.for_each_sub_node("rom", [&] (Xml_node rom) { if (!rom.has_attribute("path")) return; @@ -534,7 +534,7 @@ bool Child::_defined_by_launcher() const * If the node lacks a 'pkg' attribute, we expect the * policy to be defined by a launcher XML snippet. */ - return _start_xml.constructed() && !_start_xml->xml().has_attribute("pkg"); + return _start_xml.constructed() && !_start_xml->xml.has_attribute("pkg"); } @@ -544,9 +544,9 @@ Archive::Path Child::_config_pkg_path() const return Archive::Path(); } if (_defined_by_launcher() && _launcher_xml.constructed()) - return _launcher_xml->xml().attribute_value("pkg", Archive::Path()); + return _launcher_xml->xml.attribute_value("pkg", Archive::Path()); - return _start_xml->xml().attribute_value("pkg", Archive::Path()); + return _start_xml->xml.attribute_value("pkg", Archive::Path()); } @@ -558,10 +558,10 @@ Child::Launcher_name Child::_launcher_name() const if (!_defined_by_launcher()) return Launcher_name(); - if (_start_xml->xml().has_attribute("launcher")) - return _start_xml->xml().attribute_value("launcher", Launcher_name()); + if (_start_xml->xml.has_attribute("launcher")) + return _start_xml->xml.attribute_value("launcher", Launcher_name()); - return _start_xml->xml().attribute_value("name", Launcher_name()); + return _start_xml->xml.attribute_value("name", Launcher_name()); } @@ -607,7 +607,7 @@ Child::Child(Allocator &alloc, _skip { start_node.attribute_value("skip", false) }, _alloc { alloc }, _start_xml { _alloc, start_node }, - _name { _start_xml->xml().attribute_value("name", Name()) }, + _name { _start_xml->xml.attribute_value("name", Name()) }, _timer { timer }, _config_handler { config_handler } { } @@ -674,7 +674,7 @@ void Child::apply_config(Xml_node start_node) if (_skip) return; - if (!start_node.differs_from(_start_xml->xml())) + if (!start_node.differs_from(_start_xml->xml)) return; Archive::Path const old_pkg_path = _config_pkg_path(); @@ -736,7 +736,7 @@ void Child::apply_launcher(Launcher_name const &name, if (_launcher_name() != name) return; - if (_launcher_xml.constructed() && !launcher.differs_from(_launcher_xml->xml())) + if (_launcher_xml.constructed() && !launcher.differs_from(_launcher_xml->xml)) return; _launcher_xml.construct(_alloc, launcher); diff --git a/repos/gems/src/app/depot_deploy/child.h b/repos/gems/src/app/depot_deploy/child.h index 96b2a68af0..8e7afab8c8 100644 --- a/repos/gems/src/app/depot_deploy/child.h +++ b/repos/gems/src/app/depot_deploy/child.h @@ -73,15 +73,15 @@ class Depot_deploy::Child : public List_model::Element * If the node lacks a 'pkg' attribute, we expect the * policy to be defined by a launcher XML snippet. */ - return _start_xml.constructed() && !_start_xml->xml().has_attribute("pkg"); + return _start_xml.constructed() && !_start_xml->xml.has_attribute("pkg"); } Archive::Path _config_pkg_path() const { if (_defined_by_launcher() && _launcher_xml.constructed()) - return _launcher_xml->xml().attribute_value("pkg", Archive::Path()); + return _launcher_xml->xml.attribute_value("pkg", Archive::Path()); - return _start_xml->xml().attribute_value("pkg", Archive::Path()); + return _start_xml->xml.attribute_value("pkg", Archive::Path()); } Launcher_name _launcher_name() const @@ -89,10 +89,10 @@ class Depot_deploy::Child : public List_model::Element if (!_defined_by_launcher()) return Launcher_name(); - if (_start_xml->xml().has_attribute("launcher")) - return _start_xml->xml().attribute_value("launcher", Launcher_name()); + if (_start_xml->xml.has_attribute("launcher")) + return _start_xml->xml.attribute_value("launcher", Launcher_name()); - return _start_xml->xml().attribute_value("name", Launcher_name()); + return _start_xml->xml.attribute_value("name", Launcher_name()); } /* @@ -156,7 +156,7 @@ class Depot_deploy::Child : public List_model::Element : _alloc(alloc), _start_xml(_alloc, start_node), - _name(_start_xml->xml().attribute_value("name", Name())) + _name(_start_xml->xml.attribute_value("name", Name())) { } Name name() const { return _name; } @@ -166,7 +166,7 @@ class Depot_deploy::Child : public List_model::Element */ bool apply_config(Xml_node start_node) { - if (!start_node.differs_from(_start_xml->xml())) + if (!start_node.differs_from(_start_xml->xml)) return false; Archive::Path const old_pkg_path = _config_pkg_path(); @@ -243,7 +243,7 @@ class Depot_deploy::Child : public List_model::Element if (_launcher_name() != name) return false; - if (_launcher_xml.constructed() && !launcher.differs_from(_launcher_xml->xml())) + if (_launcher_xml.constructed() && !launcher.differs_from(_launcher_xml->xml)) return false; _launcher_xml.construct(_alloc, launcher); @@ -261,11 +261,11 @@ class Depot_deploy::Child : public List_model::Element Condition const orig_condition = _condition; Xml_node launcher_xml = _launcher_xml.constructed() - ? _launcher_xml->xml() + ? _launcher_xml->xml : Xml_node(""); if (_start_xml.constructed()) - _condition = cond_fn(_start_xml->xml(), launcher_xml) + _condition = cond_fn(_start_xml->xml, launcher_xml) ? SATISFIED : UNSATISFIED; return _condition != orig_condition; @@ -274,11 +274,11 @@ class Depot_deploy::Child : public List_model::Element void apply_if_unsatisfied(auto const &fn) const { Xml_node launcher_xml = _launcher_xml.constructed() - ? _launcher_xml->xml() + ? _launcher_xml->xml : Xml_node(""); if (_condition == UNSATISFIED && _start_xml.constructed()) - fn(_start_xml->xml(), launcher_xml, _name); + fn(_start_xml->xml, launcher_xml, _name); } /* @@ -403,15 +403,15 @@ void Depot_deploy::Child::gen_start_node(Xml_generator &xml, if (_defined_by_launcher() && !_launcher_xml.constructed()) return; - if (!_pkg_xml->xml().has_sub_node("runtime")) { + if (!_pkg_xml->xml.has_sub_node("runtime")) { warning("blueprint for '", _name, "' lacks runtime information"); return; } Xml_node const launcher_xml = (_defined_by_launcher()) - ? _launcher_xml->xml() : Xml_node(""); + ? _launcher_xml->xml : Xml_node(""); - Xml_node const start_xml = _start_xml->xml(); + Xml_node const start_xml = _start_xml->xml; xml.node("start", [&] { @@ -427,7 +427,7 @@ void Depot_deploy::Child::gen_start_node(Xml_generator &xml, { using Version = String<64>; - Version const version = _start_xml->xml().attribute_value("version", Version()); + Version const version = _start_xml->xml.attribute_value("version", Version()); if (version.valid()) xml.attribute("version", version); } @@ -519,7 +519,7 @@ void Depot_deploy::Child::gen_start_node(Xml_generator &xml, } /* runtime handling */ - Xml_node const runtime = _pkg_xml->xml().sub_node("runtime"); + Xml_node const runtime = _pkg_xml->xml.sub_node("runtime"); /* * Insert inline '' node if provided by the start node. @@ -605,11 +605,11 @@ void Depot_deploy::Child::gen_monitor_policy_node(Xml_generator &xml) const if (_defined_by_launcher() && !_launcher_xml.constructed()) return; - if (!_pkg_xml->xml().has_sub_node("runtime")) { + if (!_pkg_xml->xml.has_sub_node("runtime")) { return; } - Xml_node const start_xml = _start_xml->xml(); + Xml_node const start_xml = _start_xml->xml; if (start_xml.has_sub_node("monitor")) { Xml_node const monitor = start_xml.sub_node("monitor"); @@ -636,8 +636,8 @@ void Depot_deploy::Child::_gen_routes(Xml_generator &xml, Xml_node common, /* * Add routes given in the start node. */ - if (_start_xml->xml().has_sub_node("route")) { - Xml_node const route = _start_xml->xml().sub_node("route"); + if (_start_xml->xml.has_sub_node("route")) { + Xml_node const route = _start_xml->xml.sub_node("route"); route.for_each_sub_node("service", [&] (Xml_node const &service) { Name const service_name = service.attribute_value("name", Name()); @@ -673,8 +673,8 @@ void Depot_deploy::Child::_gen_routes(Xml_generator &xml, Xml_node common, /* * Add routes given in the launcher definition. */ - if (_launcher_xml.constructed() && _launcher_xml->xml().has_sub_node("route")) { - Xml_node const route = _launcher_xml->xml().sub_node("route"); + if (_launcher_xml.constructed() && _launcher_xml->xml.has_sub_node("route")) { + Xml_node const route = _launcher_xml->xml.sub_node("route"); route.with_raw_content([&] (char const *start, size_t length) { xml.append(start, length); }); } @@ -698,7 +698,7 @@ void Depot_deploy::Child::_gen_routes(Xml_generator &xml, Xml_node common, * within the depot. */ if (_config_name.valid()) { - _pkg_xml->xml().for_each_sub_node("rom", [&] (Xml_node rom) { + _pkg_xml->xml.for_each_sub_node("rom", [&] (Xml_node rom) { if (!rom.has_attribute("path")) return; @@ -734,7 +734,7 @@ void Depot_deploy::Child::_gen_routes(Xml_generator &xml, Xml_node common, * Add ROM routing rule with the label rewritten to the path within the * depot. */ - _pkg_xml->xml().for_each_sub_node("rom", [&] (Xml_node rom) { + _pkg_xml->xml.for_each_sub_node("rom", [&] (Xml_node rom) { if (!rom.has_attribute("path")) return; diff --git a/repos/gems/src/app/depot_query/query_image_index.cc b/repos/gems/src/app/depot_query/query_image_index.cc index 7a19565e1f..c431c798d6 100644 --- a/repos/gems/src/app/depot_query/query_image_index.cc +++ b/repos/gems/src/app/depot_query/query_image_index.cc @@ -65,7 +65,7 @@ void Depot_query::Main::_query_image_index(Xml_node const &index_query, if (!from_index.constructed()) return; - from_index->xml().for_each_sub_node("info", [&] (Xml_node const &info) { + from_index->xml.for_each_sub_node("info", [&] (Xml_node const &info) { using Text = String<160>; Text const text = info.attribute_value("text", Text()); if (text.valid()) diff --git a/repos/gems/src/app/file_vault/main.cc b/repos/gems/src/app/file_vault/main.cc index cba0522b46..a3a80bdcd1 100644 --- a/repos/gems/src/app/file_vault/main.cc +++ b/repos/gems/src/app/file_vault/main.cc @@ -250,7 +250,7 @@ struct Main : Sandbox::Local_service_base::Wakeup, Sandbox::State_handler void update_sandbox_config() { Buffered_xml config { heap, "config", [&] (Xml_generator &xml) { generate_sandbox_config(xml); } }; - config.with_xml_node([&] (Xml_node const &config) { sandbox.apply_config(config); }); + sandbox.apply_config(config.xml); } void generate_ui_report() @@ -574,103 +574,102 @@ void Main::handle_sandbox_state() bool update_sandbox_cfg { false }; bool ui_report_changed { false }; Number_of_clients num_clients { 0 }; - sandbox_state.with_xml_node([&] (Xml_node const &sandbox_state) { - switch (state) { - case SETUP_INIT_TRUST_ANCHOR: + switch (state) { + case SETUP_INIT_TRUST_ANCHOR: - if (child_succeeded(tresor_init_trust_anchor, sandbox_state)) { - set_state(SETUP_TRESOR_INIT); - update_sandbox_cfg = true; - } - break; - - case SETUP_CREATE_IMAGE: - - if (child_succeeded(truncate_file, sandbox_state)) { - set_state(SETUP_INIT_TRUST_ANCHOR); - update_sandbox_cfg = true; - } - break; - - case UNLOCK_INIT_TRUST_ANCHOR: - { - with_exit_code(tresor_init_trust_anchor, sandbox_state, [&] (int code) { - if (code) - unlock_retry_delay.schedule(Microseconds { 3000000 }); - else { - set_state(UNLOCK_START_TRESOR); - update_sandbox_cfg = true; - } - }); - break; + if (child_succeeded(tresor_init_trust_anchor, sandbox_state.xml)) { + set_state(SETUP_TRESOR_INIT); + update_sandbox_cfg = true; } - case SETUP_TRESOR_INIT: + break; - if (child_succeeded(tresor_init, sandbox_state)) { - set_state(SETUP_START_TRESOR); - update_sandbox_cfg = true; - } - break; + case SETUP_CREATE_IMAGE: - case SETUP_START_TRESOR: - - if (child_succeeded(sync_to_tresor_vfs_init, sandbox_state)) { - set_state(SETUP_MKE2FS); - update_sandbox_cfg = true; - } - break; - - case UNLOCK_START_TRESOR: - - if (child_succeeded(sync_to_tresor_vfs_init, sandbox_state)) { - set_state(UNLOCK_READ_FS_SIZE); - update_sandbox_cfg = true; - } - break; - - case SETUP_MKE2FS: - - if (child_succeeded(mke2fs, sandbox_state)) { - set_state(SETUP_READ_FS_SIZE); - update_sandbox_cfg = true; - } - break; - - case UNLOCKED: - - handle_sandbox_state_extend_and_rekey(sandbox_state, update_sandbox_cfg, ui_report_changed); - with_child(sandbox_state, rump_vfs, [&] (Xml_node const &child) { - child.with_optional_sub_node("provided", [&] (Xml_node const &provided) { - provided.for_each_sub_node("session", [&] (Xml_node const &session) { - if (session.attribute_value("service", Service_name()) == "File_system") - num_clients.value++; }); }); }); - break; - - case LOCK_PENDING: - - handle_sandbox_state_extend_and_rekey(sandbox_state, update_sandbox_cfg, ui_report_changed); - if (extend_state == Extend::INACTIVE && rekey_state == Rekey::INACTIVE) { - set_state(START_LOCKING); - update_sandbox_cfg = true; - } - break; - - case START_LOCKING: - - if (child_succeeded(lock_fs_tool, sandbox_state)) { - set_state(LOCKING); - update_sandbox_cfg = true; - } - break; - - default: break; + if (child_succeeded(truncate_file, sandbox_state.xml)) { + set_state(SETUP_INIT_TRUST_ANCHOR); + update_sandbox_cfg = true; } - sandbox_state.for_each_sub_node("child", [&] (Xml_node const &child) { - children.for_each([&] (Child_state &child_state) { - if (child_state.apply_child_state_report(child)) - update_sandbox_cfg = true; }); }); - }); + break; + + case UNLOCK_INIT_TRUST_ANCHOR: + { + with_exit_code(tresor_init_trust_anchor, sandbox_state.xml, [&] (int code) { + if (code) + unlock_retry_delay.schedule(Microseconds { 3000000 }); + else { + set_state(UNLOCK_START_TRESOR); + update_sandbox_cfg = true; + } + }); + break; + } + case SETUP_TRESOR_INIT: + + if (child_succeeded(tresor_init, sandbox_state.xml)) { + set_state(SETUP_START_TRESOR); + update_sandbox_cfg = true; + } + break; + + case SETUP_START_TRESOR: + + if (child_succeeded(sync_to_tresor_vfs_init, sandbox_state.xml)) { + set_state(SETUP_MKE2FS); + update_sandbox_cfg = true; + } + break; + + case UNLOCK_START_TRESOR: + + if (child_succeeded(sync_to_tresor_vfs_init, sandbox_state.xml)) { + set_state(UNLOCK_READ_FS_SIZE); + update_sandbox_cfg = true; + } + break; + + case SETUP_MKE2FS: + + if (child_succeeded(mke2fs, sandbox_state.xml)) { + set_state(SETUP_READ_FS_SIZE); + update_sandbox_cfg = true; + } + break; + + case UNLOCKED: + + handle_sandbox_state_extend_and_rekey(sandbox_state.xml, update_sandbox_cfg, ui_report_changed); + with_child(sandbox_state.xml, rump_vfs, [&] (Xml_node const &child) { + child.with_optional_sub_node("provided", [&] (Xml_node const &provided) { + provided.for_each_sub_node("session", [&] (Xml_node const &session) { + if (session.attribute_value("service", Service_name()) == "File_system") + num_clients.value++; }); }); }); + break; + + case LOCK_PENDING: + + handle_sandbox_state_extend_and_rekey(sandbox_state.xml, update_sandbox_cfg, ui_report_changed); + if (extend_state == Extend::INACTIVE && rekey_state == Rekey::INACTIVE) { + set_state(START_LOCKING); + update_sandbox_cfg = true; + } + break; + + case START_LOCKING: + + if (child_succeeded(lock_fs_tool, sandbox_state.xml)) { + set_state(LOCKING); + update_sandbox_cfg = true; + } + break; + + default: break; + } + sandbox_state.xml.for_each_sub_node("child", [&] (Xml_node const &child) { + children.for_each([&] (Child_state &child_state) { + if (child_state.apply_child_state_report(child)) + update_sandbox_cfg = true; }); }); + if (ui_report.num_clients.value != num_clients.value) { ui_report.num_clients.value = num_clients.value; ui_report_changed = true; diff --git a/repos/gems/src/app/sculpt_manager/deploy.h b/repos/gems/src/app/sculpt_manager/deploy.h index b2aeed5432..0b334df32e 100644 --- a/repos/gems/src/app/sculpt_manager/deploy.h +++ b/repos/gems/src/app/sculpt_manager/deploy.h @@ -101,7 +101,7 @@ struct Sculpt::Deploy if (!_template.constructed()) return; - Xml_node const deploy = _template->xml(); + Xml_node const deploy = _template->xml; if (deploy.type() == "empty") return; diff --git a/repos/gems/src/app/window_layouter/layout_rules.h b/repos/gems/src/app/window_layouter/layout_rules.h index 77baecfdb2..bd1f1331db 100644 --- a/repos/gems/src/app/window_layouter/layout_rules.h +++ b/repos/gems/src/app/window_layouter/layout_rules.h @@ -113,7 +113,7 @@ class Window_layouter::Layout_rules : Noncopyable } if (_config_rules.constructed()) { - fn(_config_rules->xml()); + fn(_config_rules->xml); return; } diff --git a/repos/gems/src/app/window_layouter/target_list.h b/repos/gems/src/app/window_layouter/target_list.h index d663e9d6ec..e3cc71b258 100644 --- a/repos/gems/src/app/window_layouter/target_list.h +++ b/repos/gems/src/app/window_layouter/target_list.h @@ -256,7 +256,7 @@ class Window_layouter::Target_list return; xml.append("\n"); - _rules->xml().for_each_sub_node("screen", [&] (Xml_node screen) { + _rules->xml.for_each_sub_node("screen", [&] (Xml_node screen) { if (screen_name.valid()) { Target::Name const name = screen.attribute_value("name", Target::Name()); @@ -273,7 +273,7 @@ class Window_layouter::Target_list if (!screen_name.valid()) return; - _rules->xml().for_each_sub_node("screen", [&] (Xml_node screen) { + _rules->xml.for_each_sub_node("screen", [&] (Xml_node screen) { Target::Name const name = screen.attribute_value("name", Target::Name()); if (screen_name == name) return; diff --git a/repos/os/include/os/buffered_xml.h b/repos/os/include/os/buffered_xml.h index 11120174c7..b257080774 100644 --- a/repos/os/include/os/buffered_xml.h +++ b/repos/os/include/os/buffered_xml.h @@ -31,12 +31,10 @@ class Genode::Buffered_xml struct Allocation { char *ptr; size_t size; } const _allocation; - Xml_node const _xml { _allocation.ptr, _allocation.size }; - /** * \throw Allocator::Out_of_memory */ - Allocation _copy_xml_node(Xml_node node) + Allocation _copy_xml_node(Xml_node const &node) { Allocation allocation { }; @@ -81,12 +79,14 @@ class Genode::Buffered_xml public: + Xml_node const xml { _allocation.ptr, _allocation.size }; + /** * Constructor for buffering a copy of the specified XML node * * \throw Allocator::Out_of_memory */ - Buffered_xml(Allocator &alloc, Xml_node node) + Buffered_xml(Allocator &alloc, Xml_node const &node) : _alloc(alloc), _allocation(_copy_xml_node(node)) { } @@ -113,16 +113,6 @@ class Genode::Buffered_xml { } ~Buffered_xml() { _alloc.free(_allocation.ptr, _allocation.size); } - - /* - * \deprecated Use 'with_xml_node' instead - */ - Xml_node xml() const { return _xml; } - - /** - * Call functor 'fn' with 'Xml_node const &' as argument - */ - void with_xml_node(auto const &fn) const { fn(_xml); } }; #endif /* _OS__BUFFERED_XML_H_ */ diff --git a/repos/os/src/lib/genode_c_api/block.cc b/repos/os/src/lib/genode_c_api/block.cc index 6957203e27..82b81df4a3 100644 --- a/repos/os/src/lib/genode_c_api/block.cc +++ b/repos/os/src/lib/genode_c_api/block.cc @@ -240,7 +240,7 @@ genode_block_session * ::Root::_create_session(const char * args, throw Service_denied(); Session_label const label = label_from_args(args); - Session_policy const policy(label, _config->xml()); + Session_policy const policy(label, _config->xml); Session_info::Name const device = policy.attribute_value("device", Session_info::Name()); diff --git a/repos/os/src/lib/sandbox/child.cc b/repos/os/src/lib/sandbox/child.cc index 048b6377df..8c8493eb47 100644 --- a/repos/os/src/lib/sandbox/child.cc +++ b/repos/os/src/lib/sandbox/child.cc @@ -60,14 +60,14 @@ Sandbox::Child::apply_config(Xml_node start_node) /* * Import new start node if it differs */ - if (start_node.differs_from(_start_node->xml())) { + if (start_node.differs_from(_start_node->xml)) { /* * The node may affect the availability or unavailability * of dependencies. */ start_node.with_optional_sub_node("route", [&] (Xml_node const &route) { - _start_node->xml().with_optional_sub_node("route", [&] (Xml_node const &orig) { + _start_node->xml.with_optional_sub_node("route", [&] (Xml_node const &orig) { if (route.differs_from(orig)) { _construct_route_model_from_start_node(start_node); _uncertain_dependencies = true; } }); }); @@ -76,7 +76,7 @@ Sandbox::Child::apply_config(Xml_node start_node) * Determine how the inline config is affected. */ char const * const tag = "config"; - bool const config_was_present = _start_node->xml().has_sub_node(tag); + bool const config_was_present = _start_node->xml.has_sub_node(tag); bool const config_is_present = start_node.has_sub_node(tag); if (config_was_present != config_is_present) @@ -90,7 +90,7 @@ Sandbox::Child::apply_config(Xml_node start_node) if (config_was_present && config_is_present) { - Xml_node const old_config = _start_node->xml().sub_node(tag); + Xml_node const old_config = _start_node->xml.sub_node(tag); Xml_node const new_config = start_node.sub_node(tag); if (new_config.differs_from(old_config)) @@ -196,7 +196,7 @@ void Sandbox::Child::evaluate_dependencies() Sandbox::Ram_quota Sandbox::Child::_configured_ram_quota() const { - Xml_node const &xml = _start_node->xml(); + Xml_node const &xml = _start_node->xml; Number_of_bytes const default_ram { _default_quota_accessor.default_ram().value }; @@ -218,7 +218,7 @@ Sandbox::Cap_quota Sandbox::Child::_configured_cap_quota() const { size_t const default_caps = _default_quota_accessor.default_caps().value; - return Cap_quota { _start_node->xml().attribute_value("caps", default_caps) }; + return Cap_quota { _start_node->xml.attribute_value("caps", default_caps) }; } diff --git a/repos/os/src/lib/sandbox/child.h b/repos/os/src/lib/sandbox/child.h index 17695068fc..bd26a586a1 100644 --- a/repos/os/src/lib/sandbox/child.h +++ b/repos/os/src/lib/sandbox/child.h @@ -164,14 +164,14 @@ class Sandbox::Child : Child_policy, Routed_service::Wakeup /* * Version attribute of the start node, used to force child restarts. */ - Version _version { _start_node->xml().attribute_value("version", Version()) }; + Version _version { _start_node->xml.attribute_value("version", Version()) }; bool _uncertain_dependencies = false; /* * True if the binary is loaded with ld.lib.so */ - bool const _use_ld = _start_node->xml().attribute_value("ld", true); + bool const _use_ld = _start_node->xml.attribute_value("ld", true); Default_route_accessor &_default_route_accessor; Default_quota_accessor &_default_quota_accessor; @@ -198,7 +198,7 @@ class Sandbox::Child : Child_policy, Routed_service::Wakeup } using Name = String<64>; - Name const _unique_name { _name_from_xml(_start_node->xml()) }; + Name const _unique_name { _name_from_xml(_start_node->xml) }; static Binary_name _binary_from_xml(Xml_node start_node, Name const &unique_name) @@ -210,7 +210,7 @@ class Sandbox::Child : Child_policy, Routed_service::Wakeup } /* updated on configuration update */ - Binary_name _binary_name { _binary_from_xml(_start_node->xml(), _unique_name) }; + Binary_name _binary_name { _binary_from_xml(_start_node->xml, _unique_name) }; /* initialized in constructor, updated by 'apply_config' */ bool _heartbeat_enabled; @@ -342,8 +342,8 @@ class Sandbox::Child : Child_policy, Routed_service::Wakeup */ void produce_content(char *dst, Genode::size_t dst_len) override { - Xml_node config = _child._start_node->xml().has_sub_node("config") - ? _child._start_node->xml().sub_node("config") + Xml_node config = _child._start_node->xml.has_sub_node("config") + ? _child._start_node->xml.sub_node("config") : Xml_node(""); size_t const config_len = config.size(); @@ -390,7 +390,7 @@ class Sandbox::Child : Child_policy, Routed_service::Wakeup * e.g., constrain physical RAM allocations. */ bool const _managing_system { - _start_node->xml().attribute_value("managing_system", false) }; + _start_node->xml.attribute_value("managing_system", false) }; /** * Resource request initiated by the child @@ -746,7 +746,7 @@ class Sandbox::Child : Child_policy, Routed_service::Wakeup void exit(int exit_value) override { try { - if (_start_node->xml().sub_node("exit").attribute_value("propagate", false)) { + if (_start_node->xml.sub_node("exit").attribute_value("propagate", false)) { _env.parent().exit(exit_value); return; } diff --git a/repos/os/src/lib/sandbox/config_model.cc b/repos/os/src/lib/sandbox/config_model.cc index 9b457e7e41..124b5017de 100644 --- a/repos/os/src/lib/sandbox/config_model.cc +++ b/repos/os/src/lib/sandbox/config_model.cc @@ -73,7 +73,7 @@ struct Config_model::Default_route_node : Node void update(Xml_node const &xml) override { - if (!_default_route.constructed() || _default_route->xml().differs_from(xml)) + if (!_default_route.constructed() || _default_route->xml.differs_from(xml)) _default_route.construct(_alloc, xml); } }; diff --git a/repos/os/src/lib/sandbox/library.cc b/repos/os/src/lib/sandbox/library.cc index 21bbf69d8a..07f7da9814 100644 --- a/repos/os/src/lib/sandbox/library.cc +++ b/repos/os/src/lib/sandbox/library.cc @@ -193,7 +193,7 @@ struct Genode::Sandbox::Library : ::Sandbox::State_reporter::Producer, void _with_default_route(Child::With_xml::Ft const &fn) override { if (_default_route.constructed()) - fn(_default_route->xml()); + fn(_default_route->xml); } /** diff --git a/repos/os/src/lib/sandbox/route_model.h b/repos/os/src/lib/sandbox/route_model.h index e5f1f578c8..911dc75bd1 100644 --- a/repos/os/src/lib/sandbox/route_model.h +++ b/repos/os/src/lib/sandbox/route_model.h @@ -234,7 +234,7 @@ class Sandbox::Route_model : Noncopyable _alloc(alloc), _route_node(_alloc, route) { Rule const *at_ptr = nullptr; - _route_node.xml().for_each_sub_node([&] (Xml_node const &node) { + _route_node.xml.for_each_sub_node([&] (Xml_node const &node) { Rule &rule = *new (_alloc) Rule(_alloc, node); _rules.insert(&rule, at_ptr); /* append */ at_ptr = &rule; diff --git a/repos/os/src/lib/sandbox/server.cc b/repos/os/src/lib/sandbox/server.cc index c557d237be..f5d8290c02 100644 --- a/repos/os/src/lib/sandbox/server.cc +++ b/repos/os/src/lib/sandbox/server.cc @@ -88,7 +88,7 @@ Sandbox::Server::Service::resolve_session_request(Session_label const &label) throw Service_denied(); try { - Session_policy policy(label, _service_node->xml()); + Session_policy policy(label, _service_node->xml); if (!policy.has_sub_node("child")) throw Service_denied(); diff --git a/repos/os/src/lib/vfs/inline_file_system.h b/repos/os/src/lib/vfs/inline_file_system.h index 4fecd92e69..b19fa43908 100644 --- a/repos/os/src/lib/vfs/inline_file_system.h +++ b/repos/os/src/lib/vfs/inline_file_system.h @@ -101,7 +101,7 @@ class Vfs::Inline_file_system : public Single_file_system { Stat_result const result = Single_file_system::stat(path, out); - _node.xml().with_raw_content([&] (char const *, size_t size) { + _node.xml.with_raw_content([&] (char const *, size_t size) { out.size = size; }); return result; @@ -112,7 +112,7 @@ class Vfs::Inline_file_system : public Single_file_system Vfs::File_io_service::Read_result Vfs::Inline_file_system::Handle::read(Byte_range_ptr const &dst, size_t &out_count) { - _fs._node.xml().with_raw_content([&] (char const *start, size_t const len) { + _fs._node.xml.with_raw_content([&] (char const *start, size_t const len) { /* file read limit is the size of the XML-node content */ size_t const max_size = len; diff --git a/repos/os/src/test/sandbox/main.cc b/repos/os/src/test/sandbox/main.cc index 3ac183bb82..1d96666567 100644 --- a/repos/os/src/test/sandbox/main.cc +++ b/repos/os/src/test/sandbox/main.cc @@ -128,12 +128,9 @@ struct Test::Main : Sandbox::Local_service_base::Wakeup Buffered_xml const config { _heap, "config", [&] (Xml_generator &xml) { _generate_sandbox_config(xml); } }; - config.with_xml_node([&] (Xml_node const &config) { + log("generated config: ", config.xml); - log("generated config: ", config); - - _sandbox.apply_config(config); - }); + _sandbox.apply_config(config.xml); } /**