nautilus_system/
config.rs1use std::fmt::Debug;
17
18use nautilus_common::{
19 cache::CacheConfig, enums::Environment, logging::logger::LoggerConfig,
20 msgbus::database::MessageBusConfig,
21};
22use nautilus_core::UUID4;
23use posei_trader::engine::config::DataEngineConfig;
24use nautilus_execution::engine::config::ExecutionEngineConfig;
25use nautilus_model::identifiers::TraderId;
26use nautilus_persistence::config::StreamingConfig;
27use nautilus_portfolio::config::PortfolioConfig;
28use nautilus_risk::engine::config::RiskEngineConfig;
29
30pub trait PoseiKernelConfig: Debug {
32 fn environment(&self) -> Environment;
34 fn trader_id(&self) -> TraderId;
36 fn load_state(&self) -> bool;
38 fn save_state(&self) -> bool;
40 fn logging(&self) -> LoggerConfig;
42 fn instance_id(&self) -> Option<UUID4>;
44 fn timeout_connection(&self) -> u32;
46 fn timeout_reconciliation(&self) -> u32;
48 fn timeout_portfolio(&self) -> u32;
50 fn timeout_disconnection(&self) -> u32;
52 fn timeout_post_stop(&self) -> u32;
54 fn timeout_shutdown(&self) -> u32;
56 fn cache(&self) -> Option<CacheConfig>;
58 fn msgbus(&self) -> Option<MessageBusConfig>;
60 fn data_engine(&self) -> Option<DataEngineConfig>;
62 fn risk_engine(&self) -> Option<RiskEngineConfig>;
64 fn exec_engine(&self) -> Option<ExecutionEngineConfig>;
66 fn portfolio(&self) -> Option<PortfolioConfig>;
68 fn streaming(&self) -> Option<StreamingConfig>;
70}
71
72#[derive(Debug, Clone)]
74pub struct KernelConfig {
75 pub environment: Environment,
77 pub trader_id: TraderId,
79 pub load_state: bool,
81 pub save_state: bool,
83 pub logging: LoggerConfig,
85 pub instance_id: Option<UUID4>,
87 pub timeout_connection: u32,
89 pub timeout_reconciliation: u32,
91 pub timeout_portfolio: u32,
93 pub timeout_disconnection: u32,
95 pub timeout_post_stop: u32,
97 pub timeout_shutdown: u32,
99 pub cache: Option<CacheConfig>,
101 pub msgbus: Option<MessageBusConfig>,
103 pub data_engine: Option<DataEngineConfig>,
105 pub risk_engine: Option<RiskEngineConfig>,
107 pub exec_engine: Option<ExecutionEngineConfig>,
109 pub portfolio: Option<PortfolioConfig>,
111 pub streaming: Option<StreamingConfig>,
113}
114
115impl PoseiKernelConfig for KernelConfig {
116 fn environment(&self) -> Environment {
117 self.environment
118 }
119
120 fn trader_id(&self) -> TraderId {
121 self.trader_id
122 }
123
124 fn load_state(&self) -> bool {
125 self.load_state
126 }
127
128 fn save_state(&self) -> bool {
129 self.save_state
130 }
131
132 fn logging(&self) -> LoggerConfig {
133 self.logging.clone()
134 }
135
136 fn instance_id(&self) -> Option<UUID4> {
137 self.instance_id
138 }
139
140 fn timeout_connection(&self) -> u32 {
141 self.timeout_connection
142 }
143
144 fn timeout_reconciliation(&self) -> u32 {
145 self.timeout_reconciliation
146 }
147
148 fn timeout_portfolio(&self) -> u32 {
149 self.timeout_portfolio
150 }
151
152 fn timeout_disconnection(&self) -> u32 {
153 self.timeout_disconnection
154 }
155
156 fn timeout_post_stop(&self) -> u32 {
157 self.timeout_post_stop
158 }
159
160 fn timeout_shutdown(&self) -> u32 {
161 self.timeout_shutdown
162 }
163
164 fn cache(&self) -> Option<CacheConfig> {
165 self.cache.clone()
166 }
167
168 fn msgbus(&self) -> Option<MessageBusConfig> {
169 self.msgbus.clone()
170 }
171
172 fn data_engine(&self) -> Option<DataEngineConfig> {
173 self.data_engine.clone()
174 }
175
176 fn risk_engine(&self) -> Option<RiskEngineConfig> {
177 self.risk_engine.clone()
178 }
179
180 fn exec_engine(&self) -> Option<ExecutionEngineConfig> {
181 self.exec_engine.clone()
182 }
183
184 fn portfolio(&self) -> Option<PortfolioConfig> {
185 self.portfolio.clone()
186 }
187
188 fn streaming(&self) -> Option<StreamingConfig> {
189 self.streaming.clone()
190 }
191}
192
193impl Default for KernelConfig {
194 fn default() -> Self {
195 Self {
196 environment: Environment::Backtest,
197 trader_id: TraderId::default(),
198 load_state: false,
199 save_state: false,
200 logging: LoggerConfig::default(),
201 instance_id: None,
202 timeout_connection: 60,
203 timeout_reconciliation: 30,
204 timeout_portfolio: 10,
205 timeout_disconnection: 10,
206 timeout_post_stop: 10,
207 timeout_shutdown: 5,
208 cache: None,
209 msgbus: None,
210 data_engine: None,
211 risk_engine: None,
212 exec_engine: None,
213 portfolio: None,
214 streaming: None,
215 }
216 }
217}