RPC handlers can now access server context
Our network interface now relies on Thallium's support for `providers` (https://mochi.readthedocs.io/en/latest/thallium/09_providers.html). This allows using the member functions from a class as RPC handlers, which in turn allows RPC handers to access the class' data members. Thus, we have heavily refactored `scord`: - Create a new `scord::rpc_server` class that inherits both from `network::server` and `network::provider`. This enables the aforementioned functionality. - The RPC handlers for `scord` are now member functions of `scord::rpc_server` instead of free functions. - The managers used by `scord` (i.e. the `job_manager`, `adhoc_storage_manager`, and `pfs_storage_manager` are now members of `scord::rpc_server` instead of singletons, since they no longer need to be accessed globally. Similarly for `scord-ctl`: - Create a new `scord_ctl::rpc_server` class that inherits both from `network::server` and `network::provider`. This enables the aforementioned functionality. - The RPC handlers for `scord-ctl` are now member functions of `scord_ctl::rpc_server` instead of free functions. Additionally, we have also moved the `network` and `logger` namespaces outside of `scord`, since this code is shared by both `scord` and `scord-ctl`.
parent
b4e9cbde
Please register or sign in to comment