From 87be50c542ea084fe1f28e908d6068fbf644c7aa Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 25 May 2018 22:54:02 +0200 Subject: [PATCH] os: add Expanding_reporter::generate(Xml_node) This method allows for the verbatim reporting of an existing XML node. --- repos/os/include/os/reporter.h | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/repos/os/include/os/reporter.h b/repos/os/include/os/reporter.h index ad631b1811..8f6d84ba41 100644 --- a/repos/os/include/os/reporter.h +++ b/repos/os/include/os/reporter.h @@ -15,6 +15,7 @@ #define _INCLUDE__OS__REPORTER_H_ #include +#include #include #include #include @@ -190,6 +191,12 @@ class Genode::Expanding_reporter _reporter->enabled(true); } + void _increase_report_buffer() + { + _buffer_size += 4096; + _construct(); + } + public: Expanding_reporter(Env &env, Node_type const &type, Label const &label) @@ -200,16 +207,21 @@ class Genode::Expanding_reporter { retry( - /* attempt to generate a report, may throw */ [&] () { Reporter::Xml_generator xml(*_reporter, [&] () { fn(xml); }); }, - /* respond to exception by successively increasing the buffer */ - [&] () { - _buffer_size += 4096; - _construct(); - } + [&] () { _increase_report_buffer(); } + ); + } + + void generate(Xml_node node) + { + retry( + + [&] () { _reporter->report(node.addr(), node.size()); }, + + [&] () { _increase_report_buffer(); } ); } };