sl4f_lib/diagnostics/
types.rs

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
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

use serde::{Deserialize, Serialize};

/// Enum for supported Diagnostics commands.
#[derive(Debug, PartialEq)]
pub enum DiagnosticsMethod {
    /// Wraps `fuchsia.diagnostics.Archive.StreamDiagnostics` with default parameters
    /// stream_mode=SNAPSHOT, format=JSON, data_type=INSPECT,
    /// batch_retrieval_timeout_seconds=60
    SnapshotInspect,
}

#[derive(Serialize, Deserialize)]
pub struct SnapshotInspectArgs {
    pub selectors: Vec<String>,
    pub service_name: String,
}

impl std::str::FromStr for DiagnosticsMethod {
    type Err = anyhow::Error;

    fn from_str(method: &str) -> Result<Self, Self::Err> {
        match method {
            "SnapshotInspect" => Ok(DiagnosticsMethod::SnapshotInspect),
            _ => return Err(format_err!("invalid Diagnostics Facade method: {}", method)),
        }
    }
}