diem_config/config/
secure_backend_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 diem_secure_storage::OnDiskStorage;
9use serde::{Deserialize, Serialize};
10use std::path::PathBuf;
11
12#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
13#[serde(default, deny_unknown_fields)]
14pub struct OnDiskStorageConfig {
15    // Required path for on disk storage
16    pub path: PathBuf,
17    #[serde(skip)]
18    data_dir: PathBuf,
19}
20
21impl Default for OnDiskStorageConfig {
22    fn default() -> Self {
23        Self {
24            path: PathBuf::from("secure_storage.json"),
25            data_dir: PathBuf::from("/opt/diem/data"),
26        }
27    }
28}
29
30impl OnDiskStorageConfig {
31    pub fn path(&self) -> PathBuf {
32        if self.path.is_relative() {
33            self.data_dir.join(&self.path)
34        } else {
35            self.path.clone()
36        }
37    }
38
39    pub fn set_data_dir(&mut self, data_dir: PathBuf) {
40        self.data_dir = data_dir;
41    }
42}
43
44impl From<&OnDiskStorageConfig> for OnDiskStorage {
45    fn from(config: &OnDiskStorageConfig) -> Self {
46        OnDiskStorage::new(config.path())
47    }
48}