You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on May 22, 2023. It is now read-only.
Since client session are initialized asynchronously, server sessions should be dispatched so, too. This is a requirement for a lazy initializing proxy:
session requests arrives, server starts client initialization
server returns and waits for client
client answer arrives
server accepts or rejects request
On Genode this is currently not possible since the dispatching is done synchronously in a function that either returns a valid server object or not. This is done in a so called root object that inherits from Rpc_object which is then passed to env.ep()->manage(). Theoretically the Rpc_object at some point receives a signal, calls a function that sets up the data, calls _session_create and then evaluates the return value to send an answer. We have to inherit at a point where we can overwrite the function that calls _session_create and sends the return value to let it only send a signal, to ourselves and then return without sending an answer. We then could send the answer at some other point asynchronously. Another way would to simply bypass the original signal and use our own. However we still need the data passed with the request.
Also to fit sufficiently nice into Genode our solution should inherit from something that can be passed directly to manage and we should try to keep the visibility of members intact. This however may not possible.
The text was updated successfully, but these errors were encountered:
Sign up for freeto subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Since client session are initialized asynchronously, server sessions should be dispatched so, too. This is a requirement for a lazy initializing proxy:
On Genode this is currently not possible since the dispatching is done synchronously in a function that either returns a valid server object or not. This is done in a so called root object that inherits from
Rpc_object
which is then passed toenv.ep()->manage()
. Theoretically theRpc_object
at some point receives a signal, calls a function that sets up the data, calls_session_create
and then evaluates the return value to send an answer. We have to inherit at a point where we can overwrite the function that calls_session_create
and sends the return value to let it only send a signal, to ourselves and then return without sending an answer. We then could send the answer at some other point asynchronously. Another way would to simply bypass the original signal and use our own. However we still need the data passed with the request.Also to fit sufficiently nice into Genode our solution should inherit from something that can be passed directly to
manage
and we should try to keep the visibility of members intact. This however may not possible.The text was updated successfully, but these errors were encountered: