CCF
Loading...
Searching...
No Matches
configuration.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
4#pragma once
5
8
9#include <optional>
10#include <string>
11
12namespace host
13{
14 enum class EnclaveType
15 {
16 RELEASE,
17 DEBUG,
18 VIRTUAL // Deprecated (use EnclavePlatform instead)
19 };
22 {{EnclaveType::RELEASE, "Release"},
23 {EnclaveType::DEBUG, "Debug"},
24 {EnclaveType::VIRTUAL, "Virtual"}});
25
26 enum class EnclavePlatform
27 {
28 SGX,
29 SNP,
30 VIRTUAL,
31 };
34 {{EnclavePlatform::SGX, "SGX"},
35 {EnclavePlatform::SNP, "SNP"},
36 {EnclavePlatform::VIRTUAL, "Virtual"}});
37
38 enum class LogFormat
39 {
40 TEXT,
41 JSON
42 };
44 LogFormat, {{LogFormat::TEXT, "Text"}, {LogFormat::JSON, "Json"}});
45
47 {
48 std::string certificate_file;
49 std::optional<std::string> encryption_public_key_file = std::nullopt;
50 std::optional<std::string> data_json_file = std::nullopt;
51
52 bool operator==(const ParsedMemberInfo& other) const = default;
53 };
54
58 ParsedMemberInfo, encryption_public_key_file, data_json_file);
59
61 {
62 struct Enclave
63 {
64 std::string file;
67
68 bool operator==(const Enclave&) const = default;
69 };
71
72 // Other
75 std::optional<std::string> node_client_interface = std::nullopt;
77 std::optional<ccf::ds::TimeString> idle_connection_timeout =
79 std::optional<std::string> node_data_json_file = std::nullopt;
80 std::optional<std::string> service_data_json_file = std::nullopt;
82
84 {
85 std::string node_certificate_file = "nodecert.pem";
86 std::string pid_file = "cchost.pid";
87
88 // Addresses files
89 std::string node_to_node_address_file = "";
90 std::string rpc_addresses_file = "";
91
92 bool operator==(const OutputFiles&) const = default;
93 };
95
96 struct Ledger
97 {
98 std::string directory = "ledger";
99 std::vector<std::string> read_only_directories = {};
101
102 bool operator==(const Ledger&) const = default;
103 };
105
107 {
108 std::string directory = "snapshots";
109 size_t tx_count = 10'000;
110 std::optional<std::string> read_only_directory = std::nullopt;
111
112 bool operator==(const Snapshots&) const = default;
113 };
115
124
125 struct Memory
126 {
130
131 bool operator==(const Memory&) const = default;
132 };
134
135 struct Command
136 {
138 std::string service_certificate_file = "service_cert.pem";
139
140 struct Start
141 {
142 std::vector<ParsedMemberInfo> members = {};
143 std::vector<std::string> constitution_files = {};
146 std::string service_subject_name = "CN=CCF Service";
147
148 bool operator==(const Start&) const = default;
149 };
151
152 struct Join
153 {
156 bool follow_redirect = true;
157
158 bool operator==(const Join&) const = default;
159 };
160 Join join = {};
161
162 struct Recover
163 {
166 std::vector<std::string> constitution_files = {};
167 bool operator==(const Recover&) const = default;
168 };
170 };
172 };
173
177
182 node_certificate_file,
183 pid_file,
184 node_to_node_address_file,
185 rpc_addresses_file);
186
190 CCHostConfig::Ledger, directory, read_only_directories, chunk_size);
191
195 CCHostConfig::Snapshots, directory, tx_count, read_only_directory);
196
200
204 CCHostConfig::Memory, circuit_size, max_msg_size, max_fragment_size);
205
208 CCHostConfig::Command::Start, members, constitution_files);
211 service_configuration,
212 initial_service_certificate_validity_days,
213 service_subject_name);
214
218 CCHostConfig::Command::Join, retry_timeout, follow_redirect);
219
224 initial_service_certificate_validity_days,
225 previous_service_identity_file,
226 constitution_files);
227
231 CCHostConfig::Command, service_certificate_file, start, join, recover);
232
237 tick_interval,
238 slow_io_logging_threshold,
239 node_client_interface,
240 client_connection_timeout,
241 idle_connection_timeout,
242 node_data_json_file,
243 service_data_json_file,
244 ignore_first_sigterm,
245 output_files,
246 ledger,
247 snapshots,
248 logging,
249 memory);
250}
StartType
Definition enclave_interface_types.h:113
@ Start
Definition enclave_interface_types.h:114
#define DECLARE_JSON_TYPE_WITH_BASE_AND_OPTIONAL_FIELDS(TYPE, BASE)
Definition json.h:700
#define DECLARE_JSON_REQUIRED_FIELDS(TYPE,...)
Definition json.h:712
#define DECLARE_JSON_TYPE_WITH_OPTIONAL_FIELDS(TYPE)
Definition json.h:688
#define DECLARE_JSON_OPTIONAL_FIELDS(TYPE,...)
Definition json.h:784
#define DECLARE_JSON_ENUM(TYPE,...)
Definition json.h:835
LoggerLevel
Definition logger_level.h:6
@ INFO
Definition logger_level.h:9
Definition configuration.h:13
LogFormat
Definition configuration.h:39
EnclaveType
Definition configuration.h:15
EnclavePlatform
Definition configuration.h:27
Definition startup_config.h:19
std::string NetAddress
Definition node_info_network.h:86
Definition service_config.h:14
Definition unit_strings.h:122
Definition unit_strings.h:159
Definition configuration.h:153
bool operator==(const Join &) const =default
ccf::NodeInfoNetwork::NetAddress target_rpc_address
Definition configuration.h:154
bool follow_redirect
Definition configuration.h:156
ccf::ds::TimeString retry_timeout
Definition configuration.h:155
Definition configuration.h:163
std::vector< std::string > constitution_files
Definition configuration.h:166
size_t initial_service_certificate_validity_days
Definition configuration.h:164
bool operator==(const Recover &) const =default
std::string previous_service_identity_file
Definition configuration.h:165
Definition configuration.h:141
bool operator==(const Start &) const =default
std::vector< ParsedMemberInfo > members
Definition configuration.h:142
std::vector< std::string > constitution_files
Definition configuration.h:143
size_t initial_service_certificate_validity_days
Definition configuration.h:145
ccf::ServiceConfiguration service_configuration
Definition configuration.h:144
std::string service_subject_name
Definition configuration.h:146
Definition configuration.h:136
std::string service_certificate_file
Definition configuration.h:138
Join join
Definition configuration.h:160
StartType type
Definition configuration.h:137
Start start
Definition configuration.h:150
Recover recover
Definition configuration.h:169
Definition configuration.h:63
std::string file
Definition configuration.h:64
EnclaveType type
Definition configuration.h:65
bool operator==(const Enclave &) const =default
EnclavePlatform platform
Definition configuration.h:66
Definition configuration.h:97
std::string directory
Definition configuration.h:98
ccf::ds::SizeString chunk_size
Definition configuration.h:100
bool operator==(const Ledger &) const =default
std::vector< std::string > read_only_directories
Definition configuration.h:99
Definition configuration.h:117
LoggerLevel host_level
Definition configuration.h:118
LogFormat format
Definition configuration.h:119
bool operator==(const Logging &) const =default
Definition configuration.h:126
ccf::ds::SizeString circuit_size
Definition configuration.h:127
ccf::ds::SizeString max_fragment_size
Definition configuration.h:129
ccf::ds::SizeString max_msg_size
Definition configuration.h:128
bool operator==(const Memory &) const =default
Definition configuration.h:84
std::string rpc_addresses_file
Definition configuration.h:90
bool operator==(const OutputFiles &) const =default
std::string node_to_node_address_file
Definition configuration.h:89
std::string pid_file
Definition configuration.h:86
std::string node_certificate_file
Definition configuration.h:85
Definition configuration.h:107
size_t tx_count
Definition configuration.h:109
std::string directory
Definition configuration.h:108
std::optional< std::string > read_only_directory
Definition configuration.h:110
bool operator==(const Snapshots &) const =default
Definition configuration.h:61
std::optional< ccf::ds::TimeString > idle_connection_timeout
Definition configuration.h:77
bool ignore_first_sigterm
Definition configuration.h:81
std::optional< std::string > service_data_json_file
Definition configuration.h:80
OutputFiles output_files
Definition configuration.h:94
ccf::ds::TimeString client_connection_timeout
Definition configuration.h:76
ccf::ds::TimeString slow_io_logging_threshold
Definition configuration.h:74
std::optional< std::string > node_client_interface
Definition configuration.h:75
Memory memory
Definition configuration.h:133
Snapshots snapshots
Definition configuration.h:114
Logging logging
Definition configuration.h:123
Enclave enclave
Definition configuration.h:70
std::optional< std::string > node_data_json_file
Definition configuration.h:79
Ledger ledger
Definition configuration.h:104
Command command
Definition configuration.h:171
ccf::ds::TimeString tick_interval
Definition configuration.h:73
Definition configuration.h:47
std::string certificate_file
Definition configuration.h:48
std::optional< std::string > data_json_file
Definition configuration.h:50
std::optional< std::string > encryption_public_key_file
Definition configuration.h:49
bool operator==(const ParsedMemberInfo &other) const =default