Hi Genodians,
in our current project, the question of synchronous communications between processes comes up quite often. For background, our scenario processes numerous parallel requests, which requires, among other operations, verifying a signature of a request and signing its response. The signature verification and signing operations are encapsulated in separate processes. That way they do not need to understand the complex message format of requests and responses, but only binary hashes and signatures. Therefore, the component processing the request must send the input data to the verify or sign component and wait for the response before continuing processing.
In our current solution we use Genode's basic synchronous RPC mechanism. This approach has the effect of creating new session types when more different functionalities such as verifying or signing are added. This seems to be in conflict with the Genode philosophy of using only few selected session types. On the other hand, building the scenario using the asynchronous report/rom mechanism would lead to significantly more complex code to avoid mixing up the many requests being processed in parallel.
Is there any better way to accomplish this?
Cheers, Sid