CCF
Loading...
Searching...
No Matches
rpc_map.h
Go to the documentation of this file.
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the Apache 2.0 License.
3#pragma once
4
5#include "ds/actors.h"
6#include "rpc_handler.h"
7
8namespace ccf
9{
10 class RPCMap
11 {
12 private:
13 std::unordered_map<ccf::ActorsType, std::shared_ptr<ccf::RpcHandler>> map;
14 std::map<std::string, ccf::ActorsType> actors_map;
15
16 public:
17 RPCMap() = default;
18
19 template <ccf::ActorsType T>
20 void register_frontend(std::shared_ptr<RpcHandler> handler_)
21 {
22 const auto name = get_actor_prefix(T);
23 actors_map.emplace(name, T);
24 map.emplace(T, handler_);
25 }
26
27 ccf::ActorsType resolve(const std::string& name)
28 {
29 auto search = actors_map.find(name);
30 if (search == actors_map.end())
32
33 return search->second;
34 }
35
36 std::optional<std::shared_ptr<RpcHandler>> find(ccf::ActorsType index)
37 {
38 auto search = map.find(index);
39 if (search == map.end())
40 return {};
41
42 return search->second;
43 }
44
45 auto& frontends()
46 {
47 return map;
48 }
49 };
50}
Definition rpc_map.h:11
std::optional< std::shared_ptr< RpcHandler > > find(ccf::ActorsType index)
Definition rpc_map.h:36
auto & frontends()
Definition rpc_map.h:45
RPCMap()=default
void register_frontend(std::shared_ptr< RpcHandler > handler_)
Definition rpc_map.h:20
ccf::ActorsType resolve(const std::string &name)
Definition rpc_map.h:27
Definition app_interface.h:14
constexpr auto get_actor_prefix(ActorsType at)
Definition actors.h:31
ActorsType
Definition actors.h:11
Definition map_serializers.h:11