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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
// 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.
use std::convert::From;
use std::convert::TryFrom;
use anyhow::Error;
use serde::Deserialize;
use serde::Serialize;
// TODO(mikehoyle): Create a way to generate these directly from the
// proto for a single source-of-truth.
#[derive(Copy, Clone, Debug, Serialize, Deserialize)]
pub enum MetricEventType {
CpuUsage,
MemoryUsage,
Fps,
JankyFps,
NetworkTxRate,
NetworkRxRate,
Interrupts,
FrameTime,
EmulatorGraphicsFreeze,
EmulatorGraphicsUnfreeze,
EmulatorGfxstreamVkAbortReason,
ChildProcessExit,
ReadIo,
WriteIo,
AudioFormatRequestOk,
AudioFormatModifiedOk,
AudioFormatFailed,
TscCoresOutOfSync,
NetworkTxRateSummarized,
NetworkRxRateSummarized,
DllLoaded,
GraphicsHangRenderThread,
GraphicsHangSyncThread,
AudioNoopStreamForced,
AudioPlaybackError,
Other(i64),
}
impl From<MetricEventType> for i64 {
fn from(event_code: MetricEventType) -> Self {
match event_code {
MetricEventType::CpuUsage => 10001,
MetricEventType::MemoryUsage => 10002,
MetricEventType::Fps => 10003,
MetricEventType::JankyFps => 10004,
MetricEventType::NetworkTxRate => 10005,
MetricEventType::NetworkRxRate => 10006,
MetricEventType::Interrupts => 10007,
MetricEventType::FrameTime => 10008,
MetricEventType::EmulatorGraphicsFreeze => 10009,
MetricEventType::EmulatorGraphicsUnfreeze => 10010,
MetricEventType::EmulatorGfxstreamVkAbortReason => 10011,
MetricEventType::ChildProcessExit => 10012,
MetricEventType::ReadIo => 10013,
MetricEventType::WriteIo => 10014,
MetricEventType::AudioFormatRequestOk => 10015,
MetricEventType::AudioFormatModifiedOk => 10016,
MetricEventType::AudioFormatFailed => 10017,
MetricEventType::TscCoresOutOfSync => 10018,
MetricEventType::NetworkTxRateSummarized => 10019,
MetricEventType::NetworkRxRateSummarized => 10020,
MetricEventType::DllLoaded => 10021,
MetricEventType::GraphicsHangRenderThread => 10024,
MetricEventType::GraphicsHangSyncThread => 10026,
MetricEventType::AudioNoopStreamForced => 10038,
MetricEventType::AudioPlaybackError => 10039,
MetricEventType::Other(code) => code,
}
}
}
impl TryFrom<i64> for MetricEventType {
type Error = Error;
fn try_from(event_code: i64) -> Result<Self, Self::Error> {
match event_code {
10001 => Ok(MetricEventType::CpuUsage),
10002 => Ok(MetricEventType::MemoryUsage),
10003 => Ok(MetricEventType::Fps),
10004 => Ok(MetricEventType::JankyFps),
10005 => Ok(MetricEventType::NetworkTxRate),
10006 => Ok(MetricEventType::NetworkRxRate),
10007 => Ok(MetricEventType::Interrupts),
10008 => Ok(MetricEventType::FrameTime),
10009 => Ok(MetricEventType::EmulatorGraphicsFreeze),
10010 => Ok(MetricEventType::EmulatorGraphicsUnfreeze),
10011 => Ok(MetricEventType::EmulatorGfxstreamVkAbortReason),
10012 => Ok(MetricEventType::ChildProcessExit),
10013 => Ok(MetricEventType::ReadIo),
10014 => Ok(MetricEventType::WriteIo),
10015 => Ok(MetricEventType::AudioFormatRequestOk),
10016 => Ok(MetricEventType::AudioFormatModifiedOk),
10017 => Ok(MetricEventType::AudioFormatFailed),
10018 => Ok(MetricEventType::TscCoresOutOfSync),
10019 => Ok(MetricEventType::NetworkTxRateSummarized),
10020 => Ok(MetricEventType::NetworkRxRateSummarized),
10021 => Ok(MetricEventType::DllLoaded),
10024 => Ok(MetricEventType::GraphicsHangRenderThread),
10026 => Ok(MetricEventType::GraphicsHangSyncThread),
10038 => Ok(MetricEventType::AudioNoopStreamForced),
10039 => Ok(MetricEventType::AudioPlaybackError),
_ => Ok(MetricEventType::Other(event_code)),
}
}
}
|