diff --git a/connector/src/bin/chaindata_standalone/main.rs b/connector/src/bin/chaindata_standalone/main.rs index 16390e5..93f6d74 100644 --- a/connector/src/bin/chaindata_standalone/main.rs +++ b/connector/src/bin/chaindata_standalone/main.rs @@ -1,7 +1,12 @@ -mod router_impl; +use std::sync::{Arc, RwLock}; +use std::thread::sleep; + +use tokio::sync::broadcast; -use std::sync::{Arc, RwLock, RwLockWriteGuard}; -use mango_feeds_connector::chain_data::{ChainData, SlotData}; +use mango_feeds_connector::{AccountWrite, SlotUpdate}; +use mango_feeds_connector::chain_data::ChainData; + +mod router_impl; pub type ChainDataArcRw = Arc>; @@ -10,19 +15,24 @@ pub fn main() { "info,mango_feeds_connector::grpc_plugin_source=debug", ); - // let chain_data = Arc::new(RwLock::new(ChainData::new())); - // chain_data.clone(), - // account_write_receiver, - // slot_receiver, - // account_update_sender.clone(), - // exit_sender.subscribe(), - // ); - // chain_data.write().unwrap().update_slot(SlotData { - // slot: 1, - // parent: None, - // status: chain_data::SlotStatus::Processed, - // chain: 0, - // }); + let (exit_sender, _) = broadcast::channel(1); + + let (account_write_sender, account_write_receiver) = async_channel::unbounded::(); + let (slot_sender, slot_receiver) = async_channel::unbounded::(); + let (account_update_sender, _) = broadcast::channel(524288); // TODO this is huge, nut init snapshot will completely spam this + + + let chain_data = Arc::new(RwLock::new(ChainData::new())); + router_impl::start_chaindata_updating( + chain_data.clone(), + account_write_receiver, + slot_receiver, + account_update_sender.clone(), + exit_sender.subscribe(), + ); + + + sleep(std::time::Duration::from_secs(10)); } diff --git a/connector/src/bin/chaindata_standalone/router_impl.rs b/connector/src/bin/chaindata_standalone/router_impl.rs index 695b82e..c0668e3 100644 --- a/connector/src/bin/chaindata_standalone/router_impl.rs +++ b/connector/src/bin/chaindata_standalone/router_impl.rs @@ -2,8 +2,8 @@ use std::sync::{Arc, RwLock, RwLockWriteGuard}; use std::time::{Duration, Instant}; use log::{info, warn}; use solana_sdk::pubkey::Pubkey; -use mango_feeds_connector::{AccountWrite, chain_data, SlotUpdate}; -use mango_feeds_connector::chain_data::{ChainData, SlotData}; +use mango_feeds_connector::{AccountWrite, SlotUpdate}; +use mango_feeds_connector::chain_data::{ChainData}; use tokio::sync::broadcast; use tokio::task::JoinHandle; @@ -11,7 +11,7 @@ pub type ChainDataArcRw = Arc>; // from router project -fn start_chaindata_updating( +pub fn start_chaindata_updating( chain_data: ChainDataArcRw, account_writes: async_channel::Receiver, slot_updates: async_channel::Receiver,