aboutsummaryrefslogtreecommitdiff
path: root/metrics/src/sys/windows.rs
blob: 0c6f407317a09981b9862b29d64f7b61a4ce561d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

pub(crate) mod controller;
pub mod gpu_metrics;
pub mod system_metrics;
pub mod wmi;

use std::time::Duration;

pub use gpu_metrics::*;
pub(crate) use system_metrics::*;
use win_util::ProcessType;

use crate::protos::event_details::EmulatorProcessType;

pub const METRICS_UPLOAD_INTERVAL: Duration = Duration::from_secs(60);
pub const API_GUEST_ANGLE_VK_ENUM_NAME: &str = "API_GUEST_ANGLE_VK";
pub const API_HOST_ANGLE_D3D_ENUM_NAME: &str = "API_HOST_ANGLE_D3D";
pub const API_UNKNOWN_ENUM_NAME: &str = "API_UNKNOWN";

#[derive(Debug)]
pub enum Error {
    CannotCloneEvent,
    CannotInstantiateEvent,
    InstanceAlreadyExists,
}

pub type Result<T> = std::result::Result<T, Error>;

impl From<ProcessType> for EmulatorProcessType {
    fn from(process_type: ProcessType) -> Self {
        match process_type {
            ProcessType::Block => EmulatorProcessType::PROCESS_TYPE_BLOCK,
            ProcessType::Main => EmulatorProcessType::PROCESS_TYPE_MAIN,
            ProcessType::Metrics => EmulatorProcessType::PROCESS_TYPE_METRICS,
            ProcessType::Net => EmulatorProcessType::PROCESS_TYPE_NET,
            ProcessType::Slirp => EmulatorProcessType::PROCESS_TYPE_SLIRP,
            ProcessType::Gpu => EmulatorProcessType::PROCESS_TYPE_GPU,
            ProcessType::Snd => EmulatorProcessType::PROCESS_TYPE_SOUND,
            ProcessType::Broker => EmulatorProcessType::PROCESS_TYPE_BROKER,
            ProcessType::Spu => EmulatorProcessType::PROCESS_TYPE_SPU,
            ProcessType::UnknownType => panic!("Unknown process type found"),
        }
    }
}