soph_runtime/config/
mod.rs1use serde::{Deserialize, Serialize};
2use soph_config::support::default;
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}
54
55#[derive(Debug, Default, Serialize, Deserialize)]
56pub enum UnhandledPanic {
57 #[serde(rename = "ignore")]
58 #[default]
59 Ignore,
60 #[serde(rename = "shutdown-runtime")]
61 ShutdownRuntime,
62}
63
64fn default_nevents() -> usize {
65 1024
66}
67
68fn default_max_blocking_threads() -> usize {
69 512
70}
71
72fn default_thread_name() -> String {
73 "tokio-runtime-worker".to_string()
74}
75
76fn default_event_interval() -> u32 {
77 61
78}
79
80fn default_local_queue_capacity() -> usize {
81 256
82}