diem_config/config/
metrics_config.rs

1// Copyright (c) The Diem Core Contributors
2// SPDX-License-Identifier: Apache-2.0
3
4// Copyright 2021 Conflux Foundation. All rights reserved.
5// Conflux is free software and distributed under GNU General Public License.
6// See http://www.gnu.org/licenses/
7
8use serde::{Deserialize, Serialize};
9use std::path::PathBuf;
10
11#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
12#[serde(default, deny_unknown_fields)]
13pub struct MetricsConfig {
14    pub collection_interval_ms: u64,
15    pub dir: PathBuf,
16    pub enabled: bool,
17    #[serde(skip)]
18    data_dir: PathBuf,
19}
20
21impl Default for MetricsConfig {
22    fn default() -> MetricsConfig {
23        MetricsConfig {
24            collection_interval_ms: 1000,
25            data_dir: PathBuf::from("/opt/diem/data"),
26            enabled: false,
27            dir: PathBuf::from("metrics"),
28        }
29    }
30}
31
32impl MetricsConfig {
33    pub fn dir(&self) -> PathBuf {
34        if self.dir.is_relative() {
35            self.data_dir.join(&self.dir)
36        } else {
37            self.dir.clone()
38        }
39    }
40
41    pub fn set_data_dir(&mut self, data_dir: PathBuf) {
42        self.data_dir = data_dir;
43    }
44}