kabu_core_blockchain/
strategy.rs1use kabu_core_actors::Broadcaster;
2use kabu_evm_db::DatabaseKabuExt;
3use kabu_types_blockchain::{KabuDataTypes, KabuDataTypesEthereum};
4use kabu_types_entities::BlockHistoryState;
5use kabu_types_events::{MessageSwapCompose, StateUpdateEvent};
6use revm::{Database, DatabaseCommit, DatabaseRef};
7
8#[derive(Clone)]
9pub struct Strategy<DB: Clone + Send + Sync + 'static, LDT: KabuDataTypes + 'static = KabuDataTypesEthereum> {
10 swap_compose_channel: Broadcaster<MessageSwapCompose<DB, LDT>>,
11 state_update_channel: Broadcaster<StateUpdateEvent<DB, LDT>>,
12}
13
14impl<
15 DB: DatabaseRef + Database + DatabaseCommit + BlockHistoryState<LDT> + DatabaseKabuExt + Send + Sync + Clone + Default + 'static,
16 LDT: KabuDataTypes,
17 > Default for Strategy<DB, LDT>
18{
19 fn default() -> Self {
20 Self::new()
21 }
22}
23
24impl<
25 DB: DatabaseRef + Database + DatabaseCommit + BlockHistoryState<LDT> + DatabaseKabuExt + Send + Sync + Clone + Default + 'static,
26 LDT: KabuDataTypes,
27 > Strategy<DB, LDT>
28{
29 pub fn new() -> Self {
30 let compose_channel: Broadcaster<MessageSwapCompose<DB, LDT>> = Broadcaster::new(100);
31 let state_update_channel: Broadcaster<StateUpdateEvent<DB, LDT>> = Broadcaster::new(100);
32 Strategy { swap_compose_channel: compose_channel, state_update_channel }
33 }
34}
35
36impl<DB: Send + Sync + Clone + 'static, LDT: KabuDataTypes> Strategy<DB, LDT> {
37 pub fn swap_compose_channel(&self) -> Broadcaster<MessageSwapCompose<DB, LDT>> {
38 self.swap_compose_channel.clone()
39 }
40
41 pub fn state_update_channel(&self) -> Broadcaster<StateUpdateEvent<DB, LDT>> {
42 self.state_update_channel.clone()
43 }
44}