mirror of
https://github.com/genodelabs/genode.git
synced 2025-05-31 22:50:54 +00:00
os: add Expanding_reporter::generate(Xml_node)
This method allows for the verbatim reporting of an existing XML node.
This commit is contained in:
parent
fc6e3c6b09
commit
87be50c542
@ -15,6 +15,7 @@
|
|||||||
#define _INCLUDE__OS__REPORTER_H_
|
#define _INCLUDE__OS__REPORTER_H_
|
||||||
|
|
||||||
#include <util/retry.h>
|
#include <util/retry.h>
|
||||||
|
#include <util/xml_node.h>
|
||||||
#include <util/reconstructible.h>
|
#include <util/reconstructible.h>
|
||||||
#include <base/attached_dataspace.h>
|
#include <base/attached_dataspace.h>
|
||||||
#include <report_session/connection.h>
|
#include <report_session/connection.h>
|
||||||
@ -190,6 +191,12 @@ class Genode::Expanding_reporter
|
|||||||
_reporter->enabled(true);
|
_reporter->enabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _increase_report_buffer()
|
||||||
|
{
|
||||||
|
_buffer_size += 4096;
|
||||||
|
_construct();
|
||||||
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Expanding_reporter(Env &env, Node_type const &type, Label const &label)
|
Expanding_reporter(Env &env, Node_type const &type, Label const &label)
|
||||||
@ -200,16 +207,21 @@ class Genode::Expanding_reporter
|
|||||||
{
|
{
|
||||||
retry<Xml_generator::Buffer_exceeded>(
|
retry<Xml_generator::Buffer_exceeded>(
|
||||||
|
|
||||||
/* attempt to generate a report, may throw */
|
|
||||||
[&] () {
|
[&] () {
|
||||||
Reporter::Xml_generator
|
Reporter::Xml_generator
|
||||||
xml(*_reporter, [&] () { fn(xml); }); },
|
xml(*_reporter, [&] () { fn(xml); }); },
|
||||||
|
|
||||||
/* respond to exception by successively increasing the buffer */
|
[&] () { _increase_report_buffer(); }
|
||||||
[&] () {
|
);
|
||||||
_buffer_size += 4096;
|
}
|
||||||
_construct();
|
|
||||||
}
|
void generate(Xml_node node)
|
||||||
|
{
|
||||||
|
retry<Xml_generator::Buffer_exceeded>(
|
||||||
|
|
||||||
|
[&] () { _reporter->report(node.addr(), node.size()); },
|
||||||
|
|
||||||
|
[&] () { _increase_report_buffer(); }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user