1use proc_macro::TokenStream;
2use proc_macro_crate::{crate_name, FoundCrate};
3use syn::{parse_macro_input, DeriveInput, Error};
4
5use crate::net::driver::TestNetDriverClientServer;
6
7mod net;
8
9#[proc_macro_derive(MessageBody, attributes(message_flag, message_reply))]
10pub fn derive_message_body(input: TokenStream) -> TokenStream {
11 let ast = parse_macro_input!(input as DeriveInput);
12 let crate_ident = crate_ident();
13
14 net::message::derive_message_body(&crate_ident, ast)
15 .unwrap_or_else(Error::into_compile_error)
16 .into()
17}
18
19#[proc_macro]
20pub fn test_net_driver_client_server_core(input: TokenStream) -> TokenStream {
21 let ast = parse_macro_input!(input as TestNetDriverClientServer);
22 let crate_ident = crate_ident();
23
24 ast.gen_core_tests(&crate_ident)
25 .unwrap_or_else(Error::into_compile_error)
26 .into()
27}
28
29#[proc_macro]
30pub fn test_net_driver_client_server_send(input: TokenStream) -> TokenStream {
31 let ast = parse_macro_input!(input as TestNetDriverClientServer);
32 let crate_ident = crate_ident();
33
34 ast.gen_send_tests(&crate_ident)
35 .unwrap_or_else(Error::into_compile_error)
36 .into()
37}
38
39#[proc_macro]
40pub fn test_net_driver_client_server_send_to(input: TokenStream) -> TokenStream {
41 let ast = parse_macro_input!(input as TestNetDriverClientServer);
42 let crate_ident = crate_ident();
43
44 ast.gen_send_to_tests(&crate_ident)
45 .unwrap_or_else(Error::into_compile_error)
46 .into()
47}
48
49#[proc_macro]
50pub fn test_net_driver_client_server_broadcast(input: TokenStream) -> TokenStream {
51 let ast = parse_macro_input!(input as TestNetDriverClientServer);
52 let crate_ident = crate_ident();
53
54 ast.gen_broadcast_tests(&crate_ident)
55 .unwrap_or_else(Error::into_compile_error)
56 .into()
57}
58
59fn crate_ident() -> syn::Ident {
60 let found_crate = crate_name("gtether").unwrap();
61 let name = match &found_crate {
62 FoundCrate::Itself => "gtether",
63 FoundCrate::Name(name) => name,
64 };
65
66 syn::Ident::new(name, proc_macro2::Span::call_site())
67}