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
10constexpr auto SERVICE_MANAGER_RPC_NAME = "mos.service_manager";
11
12class 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
26inline const std::unique_ptr<ServiceManagerServer> RpcServer = std::make_unique<ServiceManagerServer>(args: SERVICE_MANAGER_RPC_NAME);
27