1use std::collections::HashMap;
28
29use serde::Deserialize;
30
31#[derive(Deserialize, Debug, Default)]
32pub struct ClientInfo {
33 pub cl: Option<String>,
34 pub command_line: Option<String>,
35 pub name: Option<String>,
36 pub official: Option<String>,
37 pub os_type: Option<String>,
38 pub version: Option<String>,
39 pub version_mod: Option<String>,
40}
41
42#[derive(Deserialize, Debug)]
43#[serde(rename_all = "camelCase")]
44pub struct Constants {
45 #[serde(skip)]
46 pub active_field_trial_groups_id_keyed: Vec<String>,
47 #[serde(skip)]
48 pub address_family_id_keyed: HashMap<i64, String>,
49 #[serde(skip)]
50 pub cert_path_builder_digest_policy_id_keyed: HashMap<i64, String>,
51 #[serde(skip)]
52 pub cert_status_flag_id_keyed: HashMap<i64, String>,
53 #[serde(skip)]
54 pub cert_verifier_flags_id_keyed: HashMap<i64, String>,
55 #[serde(skip)]
56 pub certificate_trust_type_id_keyed: HashMap<i64, String>,
57 #[serde(skip)]
58 pub dns_query_type_id_keyed: HashMap<i64, String>,
59 #[serde(skip)]
60 pub load_flag_id_keyed: HashMap<i64, String>,
61 #[serde(skip)]
62 pub load_state_id_keyed: HashMap<i64, String>,
63 #[serde(skip)]
64 pub log_event_phase_id_keyed: HashMap<i64, String>,
65 #[serde(skip)]
66 pub log_event_types_id_keyed: HashMap<i64, String>,
67 #[serde(skip)]
68 pub log_source_type_id_keyed: HashMap<i64, String>,
69 #[serde(skip)]
70 pub net_error_id_keyed: HashMap<i64, String>,
71 #[serde(skip)]
72 pub quic_error_id_keyed: HashMap<i64, String>,
73 #[serde(skip)]
74 pub quic_rst_stream_error_id_keyed: HashMap<i64, String>,
75 #[serde(skip)]
76 pub secure_dns_mode_id_keyed: HashMap<i64, String>,
77
78 pub active_field_trial_groups: Vec<String>,
79 pub address_family: HashMap<String, i64>,
80 pub cert_path_builder_digest_policy: HashMap<String, i64>,
81 pub cert_status_flag: HashMap<String, i64>,
82 pub cert_verifier_flags: HashMap<String, i64>,
83 pub certificate_trust_type: Option<HashMap<String, i64>>,
84 pub client_info: ClientInfo,
85 pub dns_query_type: HashMap<String, i64>,
86 pub load_flag: HashMap<String, i64>,
87 pub load_state: HashMap<String, i64>,
88 pub log_event_phase: HashMap<String, i64>,
89 pub log_event_types: HashMap<String, i64>,
90 pub log_format_version: u64,
91 pub log_source_type: HashMap<String, i64>,
92 pub net_error: HashMap<String, i64>,
93 pub quic_error: HashMap<String, i64>,
94 pub quic_rst_stream_error: HashMap<String, i64>,
95 pub secure_dns_mode: HashMap<String, i64>,
96
97 pub time_tick_offset: u64,
98}
99
100#[derive(Deserialize, Debug)]
101pub struct ConstantsLine {
102 pub constants: Constants,
103}
104
105impl Constants {
106 pub fn populate_id_keyed(&mut self) {
107 self.address_family_id_keyed = self
108 .address_family
109 .iter()
110 .map(|(k, v)| (*v, k.clone()))
111 .collect::<HashMap<_, _>>();
112
113 self.cert_path_builder_digest_policy_id_keyed = self
114 .cert_path_builder_digest_policy
115 .iter()
116 .map(|(k, v)| (*v, k.clone()))
117 .collect::<HashMap<_, _>>();
118
119 self.cert_status_flag_id_keyed = self
120 .cert_status_flag
121 .iter()
122 .map(|(k, v)| (*v, k.clone()))
123 .collect::<HashMap<_, _>>();
124
125 self.cert_verifier_flags_id_keyed = self
126 .cert_verifier_flags
127 .iter()
128 .map(|(k, v)| (*v, k.clone()))
129 .collect::<HashMap<_, _>>();
130
131 if let Some(trust_map) = &self.certificate_trust_type {
132 self.certificate_trust_type_id_keyed = trust_map
133 .iter()
134 .map(|(k, v)| (*v, k.clone()))
135 .collect::<HashMap<_, _>>();
136 }
137
138 self.dns_query_type_id_keyed = self
139 .dns_query_type
140 .iter()
141 .map(|(k, v)| (*v, k.clone()))
142 .collect::<HashMap<_, _>>();
143
144 self.load_flag_id_keyed = self
145 .load_flag
146 .iter()
147 .map(|(k, v)| (*v, k.clone()))
148 .collect::<HashMap<_, _>>();
149
150 self.load_state_id_keyed = self
151 .load_state
152 .iter()
153 .map(|(k, v)| (*v, k.clone()))
154 .collect::<HashMap<_, _>>();
155
156 self.log_event_phase_id_keyed = self
157 .log_event_phase
158 .iter()
159 .map(|(k, v)| (*v, k.clone()))
160 .collect::<HashMap<_, _>>();
161
162 self.log_event_types_id_keyed = self
163 .log_event_types
164 .iter()
165 .map(|(k, v)| (*v, k.clone()))
166 .collect::<HashMap<_, _>>();
167
168 self.log_source_type_id_keyed = self
169 .log_source_type
170 .iter()
171 .map(|(k, v)| (*v, k.clone()))
172 .collect::<HashMap<_, _>>();
173
174 self.net_error_id_keyed = self
175 .net_error
176 .iter()
177 .map(|(k, v)| (*v, k.clone()))
178 .collect::<HashMap<_, _>>();
179
180 self.quic_error_id_keyed = self
181 .quic_error
182 .iter()
183 .map(|(k, v)| (*v, k.clone()))
184 .collect::<HashMap<_, _>>();
185
186 self.quic_rst_stream_error_id_keyed = self
187 .quic_rst_stream_error
188 .iter()
189 .map(|(k, v)| (*v, k.clone()))
190 .collect::<HashMap<_, _>>();
191
192 self.secure_dns_mode_id_keyed = self
193 .secure_dns_mode
194 .iter()
195 .map(|(k, v)| (*v, k.clone()))
196 .collect::<HashMap<_, _>>();
197 }
198}