genode/repos/os/src/server/report_rom
Norman Feske 4d442bca30 Streamline exception types
This patch reduces the number of exception types by facilitating
globally defined exceptions for common usage patterns shared by most
services. In particular, RPC functions that demand a session-resource
upgrade not longer reflect this condition via a session-specific
exception but via the 'Out_of_ram' or 'Out_of_caps' types.

Furthermore, the 'Parent::Service_denied', 'Parent::Unavailable',
'Root::Invalid_args', 'Root::Unavailable', 'Service::Invalid_args',
'Service::Unavailable', and 'Local_service::Factory::Denied' types have
been replaced by the single 'Service_denied' exception type defined in
'session/session.h'.

This consolidation eases the error handling (there are fewer exceptions
to handle), alleviates the need to convert exceptions along the
session-creation call chain, and avoids possible aliasing problems
(catching the wrong type with the same name but living in a different
scope).
2017-05-31 13:16:07 +02:00
..
main.cc Adjust file headers to refer to the AGPLv3 2017-02-28 12:59:29 +01:00
README report_rom: update documentation of policy config 2016-01-26 16:50:20 +01:00
rom_registry.h Streamline exception types 2017-05-31 13:16:07 +02:00
target.mk server/report_rom: componentize 2016-07-15 11:38:24 +02:00

The "report_rom" component is both a report service and a ROM service. It makes
incoming reports available as ROM modules. The ROM modules are named after the
label of the corresponding report session.

Configuration
-------------

The report-ROM server hands out ROM modules only if explicitly permitted by a
configured policy. For example:

! <config>
!   <policy label="decorator -> pointer" report="nitpicker -> pointer"/>
!   <policy ...  />
!   ...
! </config>

The label of an incoming ROM session is matched against the 'label' attribute
of all '<policy>' nodes. If the session label matches a policy label, the
client obtains the data from the report client with the label specified in the
'report' attribute. In the example above, the nitpicker GUI server sends
reports about the pointer position to the report-ROM service. Those reports
are handed out to a window decorator (labeled "decorator") as ROM module.

The component can be configured to write all incoming reports to the LOG
output by setting the 'verbose' attribute of the '<config>' node to "yes".