| 1 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | |
| 3 | #pragma once |
| 4 | |
| 5 | #include "proto/services.service.h" |
| 6 | |
| 7 | #include <librpc/rpc.h> |
| 8 | #include <memory> |
| 9 | |
| 10 | constexpr auto SERVICE_MANAGER_RPC_NAME = "mos.service_manager" ; |
| 11 | |
| 12 | class ServiceManagerServer : public IServiceManagerService |
| 13 | { |
| 14 | public: |
| 15 | explicit ServiceManagerServer(const std::string &rpcname) : IServiceManagerService(rpcname) {}; |
| 16 | |
| 17 | private: |
| 18 | rpc_result_code_t get_units(rpc_context_t *ctx, GetUnitsRequest *req, GetUnitsResponse *resp) override; |
| 19 | rpc_result_code_t get_templates(rpc_context_t *ctx, GetTemplatesRequest *req, GetTemplatesResponse *resp) override; |
| 20 | rpc_result_code_t start_unit(rpc_context_t *ctx, StartUnitRequest *req, StartUnitResponse *resp) override; |
| 21 | rpc_result_code_t stop_unit(rpc_context_t *ctx, StopUnitRequest *req, StopUnitResponse *resp) override; |
| 22 | rpc_result_code_t instantiate_unit(rpc_context_t *ctx, InstantiateUnitRequest *req, InstantiateUnitResponse *resp) override; |
| 23 | rpc_result_code_t get_unit_overrides(rpc_context_t *ctx, GetUnitOverridesRequest *req, GetUnitOverridesResponse *resp) override; |
| 24 | }; |
| 25 | |
| 26 | inline const std::unique_ptr<ServiceManagerServer> RpcServer = std::make_unique<ServiceManagerServer>(args: SERVICE_MANAGER_RPC_NAME); |
| 27 | |