[][src]Macro jsonrpc_macros::build_rpc_trait

macro_rules! build_rpc_trait {
    (
		$(#[$t_attr: meta])*
		pub trait $name:ident $(<$( $generics:ident ),*>
			$(
				where
					$( $generics2:ident : $bounds:tt $( + $morebounds:tt )* ,)+
			)*
		)*
		{
			$( $rest: tt )+
		}
	) => { ... };
    (
		@WITH_BOUNDS
		$(#[$t_attr: meta])*
		pub trait $name:ident $(<
			$( $simple_generics:ident ,)*
			@BOUNDS
			$( $generics:ident : $bounds:tt $( + $morebounds:tt )* ,)*
		>)* {
			$(
				$( #[doc=$m_doc:expr] )*
				#[ rpc( $($t:tt)* ) ]
				fn $m_name: ident ( $( $p: tt )* ) -> $result: tt <$out: ty $(, $error: ty)* >;
			)*
		}
	) => { ... };
    (
		@WITH_BOUNDS
		$(#[$t_attr: meta])*
		pub trait $name: ident $(<
			$( $simple_generics:ident ,)*
			@BOUNDS
			$( $generics:ident : $bounds:tt $( + $morebounds:tt )* ,)*
		>)* {
			type Metadata;

			$(
				$( #[ doc=$m_doc:expr ] )*
				#[ rpc( $($t:tt)* ) ]
				fn $m_name: ident ( $( $p: tt )* ) -> $result: tt <$out: ty $(, $error_std: ty) *>;
			)*

			$(
				#[ pubsub( $($pubsub_t:tt)+ ) ] {
					$( #[ doc= $sub_doc:expr ] )*
					#[ rpc( $($sub_t:tt)* ) ]
					fn $sub_name: ident ( $($sub_p: tt)* );
					$( #[ doc= $unsub_doc:expr ] )*
					#[ rpc( $($unsub_t:tt)* ) ]
					fn $unsub_name: ident ( $($unsub_p: tt)* ) -> $sub_result: tt <$sub_out: ty $(, $error_unsub: ty)* >;
				}
			)*

		}
	) => { ... };
    (GENERATE_FUNCTIONS
		$(
			$( #[doc=$m_doc:expr] )*
			fn $m_name: ident (&self $(, $p: ty)* ) $( -> $result: ty)*;
		)*
	) => { ... };
    ( WRAP $del: expr =>
		(meta, name = $name: expr $(, alias = [ $( $alias: expr, )+ ])*)
		fn $method: ident (&self, Self::Metadata $(, $param: ty)*) -> $result: tt <$out: ty $(, $error: ty)* >
	) => { ... };
    ( WRAP $del: expr =>
		pubsub: (name = $name: expr)
		subscribe: (name = $subscribe: expr $(, alias = [ $( $sub_alias: expr, )+ ])*)
		fn $sub_method: ident (&self, Self::Metadata $(, $sub_p: ty)+);
		unsubscribe: (name = $unsubscribe: expr $(, alias = [ $( $unsub_alias: expr, )+ ])*)
		fn $unsub_method: ident (&self, Option < Self::Metadata > $(, $unsub_p: ty)+) -> $result: tt <$out: ty $(, $error_unsub: ty)* >;
	) => { ... };
    ( WRAP $del: expr =>
		(name = $name: expr $(, alias = [ $( $alias: expr, )+ ])*)
		fn $method: ident (&self $(, $param: ty)*) -> $result: tt <$out: ty $(, $error: ty)* >
	) => { ... };
}