1#[macro_use]
2extern crate log;
3
4#[allow(unused_imports)]
5#[macro_use]
6extern crate serde_derive;
7
8#[allow(unused_imports)]
9#[cfg(test)]
10#[macro_use]
11extern crate serde_json;
12
13pub mod error;
14pub mod rpc;
15pub mod runloops;
16pub mod surfnet;
17pub mod types;
18
19use crossbeam_channel::{Receiver, Sender};
20pub use jsonrpc_core;
21pub use jsonrpc_http_server;
22pub use litesvm;
23pub use solana_rpc_client;
24use surfnet::{locker::SurfnetSvmLocker, svm::SurfnetSvm, GeyserEvent};
25use surfpool_types::{SimnetCommand, SubgraphCommand, SurfpoolConfig};
26use txtx_addon_network_svm_types::subgraph::PluginConfig;
27use uuid::Uuid;
28
29pub async fn start_local_surfnet(
30 surfnet_svm: SurfnetSvm,
31 config: SurfpoolConfig,
32 subgraph_commands_tx: Sender<SubgraphCommand>,
33 simnet_commands_tx: Sender<SimnetCommand>,
34 simnet_commands_rx: Receiver<SimnetCommand>,
35 geyser_events_rx: Receiver<GeyserEvent>,
36) -> Result<(), Box<dyn std::error::Error>> {
37 let svm_locker = SurfnetSvmLocker::new(surfnet_svm);
38 runloops::start_local_surfnet_runloop(
39 svm_locker,
40 config,
41 subgraph_commands_tx,
42 simnet_commands_tx,
43 simnet_commands_rx,
44 geyser_events_rx,
45 )
46 .await
47}
48
49#[derive(Debug)]
50pub enum PluginManagerCommand {
51 LoadConfig(Uuid, PluginConfig, Sender<String>),
52}
53
54#[cfg(test)]
55mod tests;