mirror of
https://github.com/genodelabs/genode.git
synced 2025-06-21 08:29:41 +00:00
@ -166,7 +166,7 @@ void Genode::List_model<ELEM>::update_from_xml(Xml_node const &node,
|
|||||||
|
|
||||||
ELEM *last_updated = nullptr; /* used for appending to 'updated_list' */
|
ELEM *last_updated = nullptr; /* used for appending to 'updated_list' */
|
||||||
|
|
||||||
node.for_each_sub_node([&] (Xml_node sub_node) {
|
node.for_each_sub_node([&] (Xml_node const &sub_node) {
|
||||||
|
|
||||||
/* skip XML nodes that are unrelated to the data model */
|
/* skip XML nodes that are unrelated to the data model */
|
||||||
if (!ELEM::type_matches(sub_node))
|
if (!ELEM::type_matches(sub_node))
|
||||||
|
@ -126,7 +126,7 @@ namespace {
|
|||||||
|
|
||||||
Tslab<Service::Session, 4000> _session_slab { &_sliced_heap };
|
Tslab<Service::Session, 4000> _session_slab { &_sliced_heap };
|
||||||
|
|
||||||
void _handle_session_request(Xml_node, char const *type);
|
void _handle_session_request(Xml_node const &, char const *type);
|
||||||
void _handle_session_requests();
|
void _handle_session_requests();
|
||||||
|
|
||||||
Service_registry _services { };
|
Service_registry _services { };
|
||||||
@ -152,7 +152,7 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Root_proxy::_handle_session_request(Xml_node request, char const *type)
|
void Root_proxy::_handle_session_request(Xml_node const &request, char const *type)
|
||||||
{
|
{
|
||||||
if (!request.has_attribute("id") || !request.has_type(type))
|
if (!request.has_attribute("id") || !request.has_type(type))
|
||||||
return;
|
return;
|
||||||
@ -235,13 +235,13 @@ void Root_proxy::_handle_session_requests()
|
|||||||
* step. If we served the new client before the old one, it would look like
|
* step. If we served the new client before the old one, it would look like
|
||||||
* an attempt to create a second session.
|
* an attempt to create a second session.
|
||||||
*/
|
*/
|
||||||
requests.for_each_sub_node([&] (Xml_node request) {
|
requests.for_each_sub_node([&] (Xml_node const &request) {
|
||||||
_handle_session_request(request, "upgrade"); });
|
_handle_session_request(request, "upgrade"); });
|
||||||
|
|
||||||
requests.for_each_sub_node([&] (Xml_node request) {
|
requests.for_each_sub_node([&] (Xml_node const &request) {
|
||||||
_handle_session_request(request, "close"); });
|
_handle_session_request(request, "close"); });
|
||||||
|
|
||||||
requests.for_each_sub_node([&] (Xml_node request) {
|
requests.for_each_sub_node([&] (Xml_node const &request) {
|
||||||
_handle_session_request(request, "create"); });
|
_handle_session_request(request, "create"); });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -241,7 +241,7 @@ struct Formatted_xml_attribute
|
|||||||
/**
|
/**
|
||||||
* Print attributes of XML node
|
* Print attributes of XML node
|
||||||
*/
|
*/
|
||||||
static void print_xml_attr_info(Output &output, Xml_node node, int indent = 0)
|
static void print_xml_attr_info(Output &output, Xml_node const &node, int indent = 0)
|
||||||
{
|
{
|
||||||
node.for_each_attribute([&] (Xml_attribute const &a) {
|
node.for_each_attribute([&] (Xml_attribute const &a) {
|
||||||
print(output, Formatted_xml_attribute(a, indent), "\n"); });
|
print(output, Formatted_xml_attribute(a, indent), "\n"); });
|
||||||
@ -256,10 +256,10 @@ static void print_xml_attr_info(Output &output, Xml_node node, int indent = 0)
|
|||||||
*/
|
*/
|
||||||
struct Formatted_xml_node
|
struct Formatted_xml_node
|
||||||
{
|
{
|
||||||
Xml_node const _node;
|
Xml_node const &_node;
|
||||||
unsigned const _indent;
|
unsigned const _indent;
|
||||||
|
|
||||||
Formatted_xml_node(Xml_node node, unsigned indent = 0)
|
Formatted_xml_node(Xml_node const &node, unsigned indent = 0)
|
||||||
: _node(node), _indent(indent) { }
|
: _node(node), _indent(indent) { }
|
||||||
|
|
||||||
void print(Output &output) const
|
void print(Output &output) const
|
||||||
@ -295,14 +295,17 @@ struct Formatted_xml_node
|
|||||||
/**
|
/**
|
||||||
* Print content of sub node with specified type
|
* Print content of sub node with specified type
|
||||||
*/
|
*/
|
||||||
static void log_key(Xml_node node, char const *key)
|
static void log_key(Xml_node const &node, char const *key)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
Xml_node sub_node = node.sub_node(key);
|
node.with_sub_node(key,
|
||||||
|
[&] (Xml_node const &sub_node) {
|
||||||
sub_node.with_raw_content([&] (char const *start, size_t length) {
|
sub_node.with_raw_content([&] (char const *start, size_t length) {
|
||||||
log("content of sub node \"", key, "\" = \"", Cstring(start, length), "\""); });
|
log("content of sub node \"", key, "\" = \"", Cstring(start, length), "\""); });
|
||||||
} catch (Xml_node::Nonexistent_sub_node) {
|
},
|
||||||
|
[&] {
|
||||||
log("sub node \"", key, "\" is not defined\n");
|
log("sub node \"", key, "\" is not defined\n");
|
||||||
|
});
|
||||||
} catch (Xml_node::Invalid_syntax) {
|
} catch (Xml_node::Invalid_syntax) {
|
||||||
log("invalid syntax of node \"", key, "\"");
|
log("invalid syntax of node \"", key, "\"");
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user