nan_serve_publish_event/
lib.rs

1extern crate proc_macro;
2
3use proc_macro::TokenStream;
4use quote::quote;
5use syn::{parse_macro_input, Ident};
6
7
8#[proc_macro]
9pub fn publish_event(input: TokenStream) -> TokenStream {
10    let instance_name = parse_macro_input!(input as Ident);
11
12    let expanded = quote! {
13        {
14            let type_name = std::any::type_name_of_val(&#instance_name);
15            let name = type_name.split("::").last().unwrap(); // Extract the last segment (e.g., "AddNumbers")
16            let data = bincode::serialize(&#instance_name).unwrap();
17            crate::tokio_event_adapter_runtime::publish_event(name, data);
18        }
19    };
20
21    TokenStream::from(expanded)
22}