surfpool_core/
lib.rs

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;