aboutsummaryrefslogtreecommitdiff
path: root/vendor/generic/metrics/src/event_types.rs
blob: 64ee5edd559840621f07dc2b82eff3f104ed35e0 (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
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)),
        }
    }
}