Skip to content

Commit a319e55

Browse files
committed
initialize cache, clock and engines in kernel
1 parent 49ad22b commit a319e55

File tree

1 file changed

+43
-1
lines changed

1 file changed

+43
-1
lines changed

crates/system/src/kernel.rs

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,16 @@
1717
#![allow(dead_code)]
1818
#![allow(unused_variables)]
1919

20+
use std::{cell::RefCell, rc::Rc};
21+
22+
use nautilus_common::{
23+
cache::{Cache, CacheConfig, database::CacheDatabaseAdapter},
24+
clock::Clock,
25+
};
2026
use nautilus_core::UUID4;
2127
use nautilus_data::engine::DataEngine;
28+
use nautilus_execution::engine::ExecutionEngine;
29+
use nautilus_model::identifiers::TraderId;
2230
use ustr::Ustr;
2331

2432
use crate::config::NautilusKernelConfig;
@@ -27,27 +35,61 @@ use crate::config::NautilusKernelConfig;
2735
pub struct NautilusKernel {
2836
pub name: Ustr,
2937
pub instance_id: UUID4,
38+
pub config: NautilusKernelConfig,
3039
pub data_engine: DataEngine,
31-
config: NautilusKernelConfig,
40+
pub exec_engine: ExecutionEngine,
41+
pub cache: Rc<RefCell<Cache>>,
42+
pub clock: Rc<RefCell<dyn Clock>>,
3243
}
3344

3445
impl NautilusKernel {
3546
#[must_use]
3647
pub fn new(name: Ustr, config: NautilusKernelConfig) -> Self {
3748
let instance_id = config.instance_id.unwrap_or_default();
3849
let data_engine = Self::initialize_data_engine();
50+
let exec_engine = Self::initialize_exec_engine();
51+
let cache = Self::initialize_cache(config.trader_id, &instance_id, config.cache.clone());
52+
let clock = Self::initialize_clock();
3953
Self {
4054
name,
4155
instance_id,
4256
data_engine,
57+
exec_engine,
4358
config,
59+
cache,
60+
clock,
4461
}
4562
}
4663

64+
fn initialize_clock() -> Rc<RefCell<dyn Clock>> {
65+
todo!("initialize_clock")
66+
}
67+
68+
fn initialize_cache(
69+
trader_id: TraderId,
70+
instance_id: &UUID4,
71+
cache_config: Option<CacheConfig>,
72+
) -> Rc<RefCell<Cache>> {
73+
let cache_config = cache_config.unwrap_or_default();
74+
let cache_database: Option<Box<dyn CacheDatabaseAdapter>> =
75+
if let Some(cache_database_config) = &cache_config.database {
76+
todo!("initialize_cache_database")
77+
} else {
78+
None
79+
};
80+
81+
let cache = Cache::new(Some(cache_config), cache_database);
82+
Rc::new(RefCell::new(cache))
83+
}
84+
4785
fn initialize_data_engine() -> DataEngine {
4886
todo!("initialize_data_engine")
4987
}
5088

89+
fn initialize_exec_engine() -> ExecutionEngine {
90+
todo!("initialize_exec_engine")
91+
}
92+
5193
fn start(&self) {
5294
todo!("implement start")
5395
}

0 commit comments

Comments
 (0)