tauri_plugin_profiling/
config.rs

1//! Configuration types for the profiling plugin.
2
3use serde::{Deserialize, Serialize};
4use std::path::PathBuf;
5
6/// Plugin configuration set at initialization.
7#[derive(Debug, Clone, Serialize, Deserialize)]
8#[serde(default)]
9pub struct ProfilingConfig {
10    /// Sampling frequency in Hz (default: 100)
11    pub frequency: i32,
12
13    /// Output directory for flamegraphs (default: app data dir)
14    pub output_dir: Option<PathBuf>,
15
16    /// Filename prefix for generated flamegraphs
17    pub filename_prefix: String,
18}
19
20impl Default for ProfilingConfig {
21    fn default() -> Self {
22        Self {
23            frequency: 100,
24            output_dir: None,
25            filename_prefix: "cpu-profile".to_string(),
26        }
27    }
28}
29
30/// Per-session options that override plugin configuration.
31#[derive(Debug, Clone, Serialize, Deserialize, Default)]
32#[serde(default)]
33pub struct StartOptions {
34    /// Override sampling frequency for this session
35    pub frequency: Option<i32>,
36
37    /// Custom filename for this session's output
38    pub filename: Option<String>,
39}
40
41/// Output from a completed profiling session.
42#[derive(Debug, Clone, Serialize, Deserialize)]
43pub struct ProfileResult {
44    /// Path to the generated flamegraph SVG
45    pub flamegraph_path: PathBuf,
46
47    /// Total samples collected
48    pub sample_count: usize,
49
50    /// Duration of profiling in milliseconds
51    pub duration_ms: u64,
52}