Implementation of basic RPC infrastructure (capability root, id generator, data pipe, TCP/IP connection)
The core of the library (the data caching service and distributed computation) will require some additions on top of the Capnproto RPC infrastructure, in order to efficiently perform distributed computation. In particular, we need the following systems:
- A root struct into which we can put interfaces exposing all the major services included in the core featureset
- A service which can provide IDs based on a cryptographically secure random number generator (this is the sole reason I decided to put Botan is as a dependency)
- A data (and most importantly, capability) pipe which will allow unconnected services to pass capabilities to each other.
- Low-level functions to form and accept TCP/IP connections and in-process pipes (I don't think I will use pipes for cross-process communication).