mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-20 23:15:42 +00:00
Refactor the runtime API to use traits. (#878)
* Add missing `As` imports. * Adds new API traits that will be used by the client and runtime * Switch consensus to new API's * Switches transaction-pool to new API's * Move runtime api stuff into its own crate * Adds `impl_apis!` macro for implementing the new API traits * Make `metadata` return directly a blob * Runtime replace `impl_stubs!` with `impl_apis!` * Switches to none feature based approach for declaring the different API traits * Fixes compilation error * Fixes errors * Make the `decl_apis!` trait usable from the outside * Make the `test-client` use the new API traits * Remove last `impl_stubs!` bits and move some of them into wasm executor for tests * A little bit more documentation
This commit is contained in:
@@ -181,34 +181,6 @@ pub fn print<T: Printable + Sized>(value: T) {
|
||||
value.print();
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! impl_stubs {
|
||||
( $( $new_name:ident $($nodecode:ident)* => $invoke: expr ),*) => {
|
||||
/// Dispatch logic for the native runtime.
|
||||
pub fn dispatch(method: &str, data: &[u8]) -> Option<Vec<u8>> {
|
||||
match method {
|
||||
$(
|
||||
stringify!($new_name) => { impl_stubs!(@METHOD data $new_name $($nodecode)* => $invoke) }
|
||||
)*
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
};
|
||||
(@METHOD $data: ident $new_name: ident NO_DECODE => $invoke:expr) => {
|
||||
Some($invoke($data))
|
||||
};
|
||||
(@METHOD $data: ident $new_name: ident => $invoke:expr) => {{
|
||||
let mut data = $data;
|
||||
let input = match $crate::codec::Decode::decode(&mut data) {
|
||||
Some(input) => input,
|
||||
None => panic!("Bad input data provided to {}", stringify!($new_name)),
|
||||
};
|
||||
|
||||
let output = $invoke(input);
|
||||
Some($crate::codec::Encode::encode(&output))
|
||||
}}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod std_tests {
|
||||
use super::*;
|
||||
|
||||
Reference in New Issue
Block a user