clightningrpc-plugin-macros

Crates.ioclightningrpc-plugin-macros
lib.rsclightningrpc-plugin-macros
version0.3.0-beta.4
sourcesrc
created_at2022-07-29 23:24:51.875981
updated_at2023-06-13 09:44:04.15067
descriptionCrate that provides a procedural macros implementation to make easy to develop a plugin developer to build a plugin
homepagehttps://github.com/laanwj/rust-clightning-rpc
repositoryhttps://github.com/laanwj/rust-clightning-rpc.git
max_upload_size
id635244
size33,563
Vincenzo Palazzo (vincenzopalazzo)

documentation

README

Rust core lightning plugin macros crate

Crate that provides a procedural macros implementation to make easy to develop a plugin developer to build a plugin.

Project Homepage

GitHub Workflow Status (branch) Crates.io docs.rs

Crate that provides a procedural macros implementation to make easy to develop a plugin developer to build a plugin.

use serde_json::json;
use serde_json::Value;

use clightningrpc_plugin_macros::*;
use clightningrpc_plugin::commands::RPCCommand;
use clightningrpc_plugin::errors::PluginError;
use clightningrpc_plugin::plugin::Plugin;

#[derive(Clone)]
struct State;

// FIXME: implement a derive macros to register
// the option plugins
impl State {
    pub fn new() -> Self {
        Self
    }
}

#[rpc_method(
    rpc_name = "foo_macro",
    description = "This is a simple and short description"
)]
pub fn foo_rpc(plugin: &mut Plugin<State>, request: Value) -> Result<Value, PluginError> {
    let response = json!({"is_dynamic": plugin.dynamic, "rpc_request": request});
    Ok(response)
}

#[notification(on = "rpc_command")]
fn on_rpc(plugin: &mut Plugin<State>, request: &Value) {
    use clightningrpc_plugin::types::LogLevel;
    plugin.log(LogLevel::Info, "received an RPC notification");
}

fn main() {
    let plugin = plugin! {
        state: State::new(),
        dynamic: true,
        notification: [
            on_rpc,
        ],
        methods: [
            foo_rpc,
        ],
        hooks: [],
    };
    plugin.start();
}

Contributing guidelines

  • Four spaces
  • Call make fmt before committing
  • If you can, GPG-sign at least your top commit when filing a PR

Supports

If you want support this library consider to donate with the following methods

Commit count: 282

cargo fmt