ayun_runtime/config/
mod.rs

1use ayun_config::support::default;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Serialize, Deserialize)]
5pub struct Runtime {
6    #[serde(default)]
7    pub kind: Kind,
8    #[serde(default)]
9    pub enable_io: bool,
10    #[serde(default = "default_nevents")]
11    pub nevents: usize,
12    #[serde(default)]
13    pub enable_time: bool,
14    #[serde(default)]
15    pub start_paused: bool,
16    #[serde(default)]
17    pub worker_threads: Option<usize>,
18    #[serde(default = "default_max_blocking_threads")]
19    pub max_blocking_threads: usize,
20    #[serde(default = "default_thread_name")]
21    pub thread_name: String,
22    #[serde(default)]
23    pub thread_stack_size: Option<usize>,
24    #[serde(default)]
25    pub keep_alive: Option<u64>,
26    #[serde(default)]
27    pub global_queue_interval: Option<u32>,
28    #[serde(default = "default_event_interval")]
29    pub event_interval: u32,
30    #[serde(default = "default_local_queue_capacity")]
31    pub local_queue_capacity: usize,
32    #[serde(default)]
33    pub unhandled_panic: UnhandledPanic,
34    #[serde(default)]
35    pub enable_metrics_poll_time_histogram: bool,
36    #[serde(default)]
37    pub disable_lifo_slot: bool,
38}
39
40impl Default for Runtime {
41    fn default() -> Self {
42        default::<Self>().expect("Failed to get default value")
43    }
44}
45
46#[derive(Debug, Default, Serialize, Deserialize)]
47pub enum Kind {
48    #[serde(rename = "current-thread")]
49    CurrentThread,
50    #[default]
51    #[serde(rename = "multi-thread")]
52    MultiThread,
53    #[serde(rename = "multi-thread-alt")]
54    MultiThreadAlt,
55}
56
57#[derive(Debug, Default, Serialize, Deserialize)]
58pub enum UnhandledPanic {
59    #[serde(rename = "ignore")]
60    #[default]
61    Ignore,
62    #[serde(rename = "shutdown-runtime")]
63    ShutdownRuntime,
64}
65
66fn default_nevents() -> usize {
67    1024
68}
69
70fn default_max_blocking_threads() -> usize {
71    512
72}
73
74fn default_thread_name() -> String {
75    "tokio-runtime-worker".to_string()
76}
77
78fn default_event_interval() -> u32 {
79    61
80}
81
82fn default_local_queue_capacity() -> usize {
83    256
84}