1use proc_macro::TokenStream;
2
3use quote::quote;
4
5#[proc_macro_attribute]
10#[cfg(not(test))] pub fn handler(_args: TokenStream, item: TokenStream) -> TokenStream {
12 let mut handler_block = item.clone();
13 let input = syn::parse_macro_input!(item as syn::ItemFn);
14 let handler_ident = input.sig.ident;
15 let expanded = quote! {
16 #[no_mangle]
17 pub extern "C" fn _wasmesh_guest_handler(ctx_id: i64, size: i32) {
18 wasmesh::guest::handle_request(ctx_id, size, #handler_ident)
19 }
20 };
21 handler_block.extend(TokenStream::from(expanded));
22 handler_block
23}