| |
| |
| |
| class AsyncRunner: |
| async def __call__(self, facade_method, *args, **kwargs): |
| await self.connection.rpc(facade_method(*args, **kwargs)) |
| |
| |
| class ThreadedRunner: |
| pass |
| |
| # Methods are descriptors?? |
| # get is called with params |
| # set gets called with the result? |
| # This could let us fake the protocol we want |
| # while decoupling the protocol from the RPC and the IO/Process context |
| |
| # The problem is leaking the runtime impl details to the top levels of the API with |
| # async def |
| # By handling the Marshal/Unmarshal side of RPC as a protocol we can leave the RPC running to a specific |
| # delegate without altering the method signatures. |
| # This still isn't quite right though as async is co-op multitasking and the methods still need to know |
| # not to block or they will pause other execution |
| |
| |
| |
| |
| |