quicknode_cascade/plugins/
stdout.rs1use crate::solana::{BlockData, Plugin, PluginFuture};
6
7pub struct StdoutPlugin;
12
13impl Plugin for StdoutPlugin {
14 fn name(&self) -> &'static str {
15 "stdout"
16 }
17
18 fn on_block<'a>(&'a self, block: &'a BlockData) -> PluginFuture<'a> {
19 Box::pin(async move {
20 let json = serde_json::to_string(block)
21 .map_err(|e| Box::new(e) as Box<dyn std::error::Error + Send + Sync>)?;
22 println!("{}", json);
23 Ok(())
24 })
25 }
26
27 fn on_raw_block<'a>(&'a self, slot: u64, raw: &'a serde_json::Value) -> PluginFuture<'a> {
28 Box::pin(async move {
29 let wrapper = serde_json::json!({ "slot": slot, "result": raw });
30 let json = serde_json::to_string(&wrapper)
31 .map_err(|e| Box::new(e) as Box<dyn std::error::Error + Send + Sync>)?;
32 println!("{}", json);
33 Ok(())
34 })
35 }
36}