CCF
Loading...
Searching...
No Matches
node_configuration_subsystem.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
7
8#include <regex>
9
10namespace ccf
11{
13 {
14 protected:
17
18 public:
20 node_state(node_state_),
21 node_config_state({node_state_.get_node_config(), {}, false})
22 {}
23
24 virtual ~NodeConfigurationSubsystem() = default;
25
26 static char const* get_subsystem_name()
27 {
28 return "NodeConfiguration";
29 }
30
31 virtual const NodeConfigurationState& get() override
32 {
34 {
37 }
38 return node_config_state;
39 }
40
42 {
44 }
45
47 {
48 for (const auto& [id, interface] :
50 {
51 LOG_TRACE_FMT("Check regex: {}", id);
52 if (interface.accepted_endpoints)
53 {
54 auto [it, ok] = node_config_state.rpc_interface_regexes.emplace(
55 id, std::vector<std::regex>{});
56 if (!ok)
57 {
58 throw std::runtime_error("Could not emplace interface regexes");
59 }
60 for (const auto& re : *interface.accepted_endpoints)
61 {
63 "Add accepted endpoint regex to interface config: {}", re);
64 it->second.emplace_back(re);
65 }
66 }
67 }
68 }
69 };
70}
Definition node_interface.h:23
virtual const ccf::StartupConfig & get_node_config() const =0
virtual bool has_received_stop_notice()=0
Definition node_configuration_interface.h:23
Definition node_configuration_subsystem.h:13
virtual ~NodeConfigurationSubsystem()=default
NodeConfigurationSubsystem(AbstractNodeState &node_state_)
Definition node_configuration_subsystem.h:19
AbstractNodeState & node_state
Definition node_configuration_subsystem.h:15
void initialize_interface_regexes()
Definition node_configuration_subsystem.h:46
static char const * get_subsystem_name()
Definition node_configuration_subsystem.h:26
virtual const NodeConfigurationState & get() override
Definition node_configuration_subsystem.h:31
NodeConfigurationState node_config_state
Definition node_configuration_subsystem.h:16
virtual bool has_received_stop_notice()
Definition node_configuration_subsystem.h:41
#define LOG_TRACE_FMT
Definition logger.h:356
Definition app_interface.h:14
ccf::NodeInfoNetwork network
Definition startup_config.h:31
Definition node_configuration_interface.h:15
const ccf::StartupConfig & node_config
Definition node_configuration_interface.h:16
bool initialized
Definition node_configuration_interface.h:19
std::map< NodeInfoNetwork::RpcInterfaceID, std::vector< std::regex > > rpc_interface_regexes
Definition node_configuration_interface.h:18
RpcInterfaces rpc_interfaces
RPC interfaces.
Definition node_info_network.h:150