Skip to main content

tango_bench/
protocol.rs

1//! Shared JSON-RPC protocol definitions: method names, parameter types, and result types
2//! used by both the worker (server) and child handle (client).
3
4use serde::{Deserialize, Serialize};
5
6pub const METHOD_LIST_BENCHMARKS: &str = "list_benchmarks";
7pub const METHOD_ESTIMATE_ITERATIONS: &str = "estimate_iterations";
8pub const METHOD_RUN_BENCHMARK: &str = "run_benchmark";
9pub const METHOD_SHUTDOWN: &str = "shutdown";
10
11#[derive(Serialize, Deserialize)]
12pub struct ListBenchmarksResult {
13    #[serde(rename = "benchmarks")]
14    pub benchmarks: Vec<String>,
15    #[serde(rename = "aux_metrics", default)]
16    pub aux_metrics: Vec<String>,
17}
18
19#[derive(Serialize, Deserialize)]
20pub struct EstimateIterationsParams {
21    #[serde(rename = "index")]
22    pub index: usize,
23    #[serde(rename = "time_ms")]
24    pub time_ms: u32,
25    #[serde(rename = "seed")]
26    pub seed: u64,
27}
28
29#[derive(Serialize, Deserialize)]
30pub struct EstimateIterationsResult {
31    #[serde(rename = "iterations")]
32    pub iterations: usize,
33}
34
35#[derive(Serialize, Deserialize)]
36pub struct RunBenchmarkParams {
37    #[serde(rename = "index")]
38    pub index: usize,
39    #[serde(rename = "seed")]
40    pub seed: u64,
41    #[serde(rename = "iterations")]
42    pub iterations: usize,
43    #[serde(rename = "num_samples")]
44    pub num_samples: usize,
45    /// Auxiliary metric ids to measure alongside time.
46    #[serde(rename = "aux_metrics")]
47    pub aux_metrics: Vec<String>,
48}
49
50#[derive(Serialize, Deserialize)]
51pub struct RunBenchmarkResult {
52    #[serde(rename = "samples")]
53    pub samples: Vec<u64>,
54    /// Auxiliary metrics samples, in the same order as `aux_metrics` in the request.
55    #[serde(rename = "aux_metrics")]
56    pub aux_metrics: Vec<u64>,
57}