//! This is a test plugin used to verify that we can compile and run //! plugins using the Rust API against Core Lightning. #[macro_use] extern crate serde_json; use cln_plugin::{options, Builder, Error, Plugin}; use tokio; #[tokio::main] async fn main() -> Result<(), anyhow::Error> { if let Some(plugin) = Builder::new((), tokio::io::stdin(), tokio::io::stdout()) .option(options::ConfigOption::new( "test-option", options::Value::Integer(42), "a test-option with default 42", )) .rpcmethod("testmethod", "This is a test", testmethod) .subscribe("connect", connect_handler) .hook("peer_connected", peer_connected_handler) .start() .await? { plugin.join().await } else { Ok(()) } } async fn testmethod(_p: Plugin<()>, _v: serde_json::Value) -> Result { Ok(json!("Hello")) } async fn connect_handler(_p: Plugin<()>, v: serde_json::Value) -> Result<(), Error> { log::info!("Got a connect notification: {}", v); Ok(()) } async fn peer_connected_handler( _p: Plugin<()>, v: serde_json::Value, ) -> Result { log::info!("Got a connect hook call: {}", v); Ok(json!({"result": "continue"})) }