1 // Copyright 2022 The ChromiumOS Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 pub(crate) mod controller; 6 pub mod gpu_metrics; 7 pub(crate) mod system_metrics; 8 pub mod wmi; 9 10 pub use gpu_metrics::*; 11 use win_util::ProcessType; 12 13 use crate::protos::event_details::EmulatorProcessType; 14 15 pub const METRIC_UPLOAD_INTERVAL_SECONDS: i64 = 60; 16 pub const API_GUEST_ANGLE_VK_ENUM_NAME: &str = "API_GUEST_ANGLE_VK"; 17 pub const API_HOST_ANGLE_D3D_ENUM_NAME: &str = "API_HOST_ANGLE_D3D"; 18 pub const API_UNKNOWN_ENUM_NAME: &str = "API_UNKNOWN"; 19 20 #[derive(Debug)] 21 pub enum Error { 22 CannotCloneEvent, 23 CannotInstantiateEvent, 24 InstanceAlreadyExists, 25 } 26 27 pub type Result<T> = std::result::Result<T, Error>; 28 29 impl From<ProcessType> for EmulatorProcessType { from(process_type: ProcessType) -> Self30 fn from(process_type: ProcessType) -> Self { 31 match process_type { 32 ProcessType::Block => EmulatorProcessType::PROCESS_TYPE_BLOCK, 33 ProcessType::Main => EmulatorProcessType::PROCESS_TYPE_MAIN, 34 ProcessType::Metrics => EmulatorProcessType::PROCESS_TYPE_METRICS, 35 ProcessType::Net => EmulatorProcessType::PROCESS_TYPE_NET, 36 ProcessType::Slirp => EmulatorProcessType::PROCESS_TYPE_SLIRP, 37 ProcessType::Gpu => EmulatorProcessType::PROCESS_TYPE_GPU, 38 ProcessType::Snd => EmulatorProcessType::PROCESS_TYPE_SOUND, 39 ProcessType::Broker => EmulatorProcessType::PROCESS_TYPE_BROKER, 40 ProcessType::Spu => EmulatorProcessType::PROCESS_TYPE_SPU, 41 } 42 } 43 } 44