mirror of
https://github.com/mmueller41/genode.git
synced 2026-01-21 20:42:56 +01:00
fixup "monitor/sandbox: use Callable" (more callables)
This commit is contained in:
@@ -209,26 +209,13 @@ class Genode::Sandbox::Local_service_base : public Service
|
||||
|
||||
using Resources = Session::Resources;
|
||||
|
||||
struct Request_fn : Interface
|
||||
{
|
||||
virtual void with_requested_session(Request &) = 0;
|
||||
};
|
||||
using With_request = Callable<void, Request &>;
|
||||
using With_upgrade = Callable<Upgrade_response, Session &, Resources const &>;
|
||||
using With_close = Callable<Close_response, Session &>;
|
||||
|
||||
void _for_each_requested_session(Request_fn &);
|
||||
|
||||
struct Upgrade_fn : Interface
|
||||
{
|
||||
virtual Upgrade_response with_upgraded_session(Session &, Resources) = 0;
|
||||
};
|
||||
|
||||
void _for_each_upgraded_session(Upgrade_fn &);
|
||||
|
||||
struct Close_fn : Interface
|
||||
{
|
||||
virtual Close_response close_session(Session &) = 0;
|
||||
};
|
||||
|
||||
void _for_each_session_to_close(Close_fn &);
|
||||
void _for_each_requested_session(With_request::Ft const &);
|
||||
void _for_each_upgraded_session (With_upgrade::Ft const &);
|
||||
void _for_each_session_to_close (With_close::Ft const &);
|
||||
|
||||
Id_space<Parent::Server> _server_id_space { };
|
||||
|
||||
@@ -255,21 +242,9 @@ struct Genode::Sandbox::Local_service : private Local_service_base
|
||||
* ('resources', 'label', 'diag') and allows the caller to respond
|
||||
* to the session request ('deliver_session', 'deny').
|
||||
*/
|
||||
template <typename FN>
|
||||
void for_each_requested_session(FN const &fn)
|
||||
void for_each_requested_session(auto const &fn)
|
||||
{
|
||||
struct Untyped_fn : Local_service_base::Request_fn
|
||||
{
|
||||
FN const &_fn;
|
||||
Untyped_fn(FN const &fn) : _fn(fn) { }
|
||||
|
||||
void with_requested_session(Request &request) override
|
||||
{
|
||||
_fn(request);
|
||||
}
|
||||
} untyped_fn(fn);
|
||||
|
||||
_for_each_requested_session(untyped_fn);
|
||||
_for_each_requested_session(With_request::Fn { fn });
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -281,22 +256,11 @@ struct Genode::Sandbox::Local_service : private Local_service_base
|
||||
*
|
||||
* The functor must return an 'Upgrade_response'.
|
||||
*/
|
||||
template <typename FN>
|
||||
void for_each_upgraded_session(FN const &fn)
|
||||
void for_each_upgraded_session(auto const &fn)
|
||||
{
|
||||
struct Untyped_fn : Local_service_base::Upgrade_fn
|
||||
{
|
||||
FN const &_fn;
|
||||
Untyped_fn(FN const &fn) : _fn(fn) { }
|
||||
|
||||
Upgrade_response with_upgraded_session(Session &session,
|
||||
Resources resources) override
|
||||
{
|
||||
return _fn(static_cast<ST &>(session), resources);
|
||||
}
|
||||
} untyped_fn(fn);
|
||||
|
||||
_for_each_upgraded_session(untyped_fn);
|
||||
_for_each_upgraded_session(With_upgrade::Fn {
|
||||
[&] (Session &session, Resources const &resources) {
|
||||
return fn(static_cast<ST &>(session), resources); } });
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -305,21 +269,11 @@ struct Genode::Sandbox::Local_service : private Local_service_base
|
||||
* The functor is called with a reference to the session object (type
|
||||
* 'ST') as argument and must return a 'Close_response'.
|
||||
*/
|
||||
template <typename FN>
|
||||
void for_each_session_to_close(FN const &fn)
|
||||
void for_each_session_to_close(auto const &fn)
|
||||
{
|
||||
struct Untyped_fn : Local_service_base::Close_fn
|
||||
{
|
||||
FN const &_fn;
|
||||
Untyped_fn(FN const &fn) : _fn(fn) { }
|
||||
|
||||
Close_response close_session(Session &session) override
|
||||
{
|
||||
return _fn(static_cast<ST &>(session));
|
||||
}
|
||||
} untyped_fn(fn);
|
||||
|
||||
_for_each_session_to_close(untyped_fn);
|
||||
_for_each_session_to_close(With_close::Fn {
|
||||
[&] (Session &session) {
|
||||
return fn(static_cast<ST &>(session)); } });
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
_ZN6Genode7Sandbox12apply_configERKNS_8Xml_nodeE T
|
||||
_ZN6Genode7Sandbox18Local_service_base26_for_each_session_to_closeERNS1_8Close_fnE T
|
||||
_ZN6Genode7Sandbox18Local_service_base26_for_each_upgraded_sessionERNS1_10Upgrade_fnE T
|
||||
_ZN6Genode7Sandbox18Local_service_base27_for_each_requested_sessionERNS1_10Request_fnE T
|
||||
_ZN6Genode7Sandbox18Local_service_base26_for_each_session_to_closeERKNS_8CallableINS1_14Close_responseEJRNS_7SessionEEE2FtE T
|
||||
_ZN6Genode7Sandbox18Local_service_base26_for_each_upgraded_sessionERKNS_8CallableINS1_16Upgrade_responseEJRNS_7SessionERKNS4_9ResourcesEEE2FtE T
|
||||
_ZN6Genode7Sandbox18Local_service_base27_for_each_requested_sessionERKNS_8CallableIvJRNS1_7RequestEEE2FtE T
|
||||
_ZN6Genode7Sandbox18Local_service_baseC1ERS0_RKNS_6StringILm32EEERNS1_6WakeupE T
|
||||
_ZN6Genode7Sandbox18Local_service_baseC2ERS0_RKNS_6StringILm32EEERNS1_6WakeupE T
|
||||
_ZN6Genode7SandboxC1ERNS_3EnvERNS0_13State_handlerE T
|
||||
|
||||
@@ -521,7 +521,7 @@ void Genode::Sandbox::Library::apply_config(Xml_node const &config)
|
||||
** Sandbox::Local_service_base **
|
||||
*********************************/
|
||||
|
||||
void Genode::Sandbox::Local_service_base::_for_each_requested_session(Request_fn &fn)
|
||||
void Genode::Sandbox::Local_service_base::_for_each_requested_session(With_request::Ft const &fn)
|
||||
{
|
||||
_server_id_space.for_each<Session_state>([&] (Session_state &session) {
|
||||
|
||||
@@ -529,7 +529,7 @@ void Genode::Sandbox::Local_service_base::_for_each_requested_session(Request_fn
|
||||
|
||||
Request request(session);
|
||||
|
||||
fn.with_requested_session(request);
|
||||
fn(request);
|
||||
|
||||
bool wakeup_client = false;
|
||||
|
||||
@@ -552,7 +552,7 @@ void Genode::Sandbox::Local_service_base::_for_each_requested_session(Request_fn
|
||||
}
|
||||
|
||||
|
||||
void Genode::Sandbox::Local_service_base::_for_each_upgraded_session(Upgrade_fn &fn)
|
||||
void Genode::Sandbox::Local_service_base::_for_each_upgraded_session(With_upgrade::Ft const &fn)
|
||||
{
|
||||
_server_id_space.for_each<Session_state>([&] (Session_state &session) {
|
||||
|
||||
@@ -567,7 +567,7 @@ void Genode::Sandbox::Local_service_base::_for_each_upgraded_session(Upgrade_fn
|
||||
Session::Resources const amount { session.ram_upgrade,
|
||||
session.cap_upgrade };
|
||||
|
||||
switch (fn.with_upgraded_session(*session.local_ptr, amount)) {
|
||||
switch (fn(*session.local_ptr, amount)) {
|
||||
|
||||
case Upgrade_response::CONFIRMED:
|
||||
session.phase = Session_state::CAP_HANDED_OUT;
|
||||
@@ -584,7 +584,7 @@ void Genode::Sandbox::Local_service_base::_for_each_upgraded_session(Upgrade_fn
|
||||
}
|
||||
|
||||
|
||||
void Genode::Sandbox::Local_service_base::_for_each_session_to_close(Close_fn &close_fn)
|
||||
void Genode::Sandbox::Local_service_base::_for_each_session_to_close(With_close::Ft const &fn)
|
||||
{
|
||||
/*
|
||||
* Collection of closed sessions to be destructed via callback
|
||||
@@ -606,7 +606,7 @@ void Genode::Sandbox::Local_service_base::_for_each_session_to_close(Close_fn &c
|
||||
if (session.local_ptr == nullptr)
|
||||
return;
|
||||
|
||||
switch (close_fn.close_session(*session.local_ptr)) {
|
||||
switch (fn(*session.local_ptr)) {
|
||||
|
||||
case Close_response::CLOSED:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user