Skip to content
This repository has been archived by the owner on May 22, 2023. It is now read-only.

Asnychronous server dispatching #137

Open
jklmnn opened this issue Jan 24, 2020 · 0 comments
Open

Asnychronous server dispatching #137

jklmnn opened this issue Jan 24, 2020 · 0 comments

Comments

@jklmnn
Copy link
Member

jklmnn commented Jan 24, 2020

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.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant