Skip to content

Commit

Permalink
Cleanup.
Browse files Browse the repository at this point in the history
  • Loading branch information
dvc94ch committed Jun 4, 2020
1 parent 12da329 commit 414142e
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 60 deletions.
10 changes: 4 additions & 6 deletions proc-macro/src/call.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,8 @@ pub fn call(s: Structure) -> TokenStream {
const FUNCTION: &'static str = #call_name;
fn events_decoder(
decoder: &mut #subxt::EventsDecoder<T>,
) -> Result<(), #subxt::EventsError> {
decoder.#with_module()?;
Ok(())
) {
decoder.#with_module();
}
}

Expand Down Expand Up @@ -125,9 +124,8 @@ mod tests {
const FUNCTION: &'static str = "transfer";
fn events_decoder(
decoder: &mut substrate_subxt::EventsDecoder<T>,
) -> Result<(), substrate_subxt::EventsError> {
decoder.with_balances()?;
Ok(())
) {
decoder.with_balances();
}
}

Expand Down
18 changes: 8 additions & 10 deletions proc-macro/src/module.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ pub fn module(_args: TokenStream, tokens: TokenStream) -> TokenStream {
let module = utils::path_to_ident(path);
let with_module = with_module_ident(module);
Some(quote! {
self.#with_module()?;
self.#with_module();
})
} else {
None
Expand All @@ -99,7 +99,7 @@ pub fn module(_args: TokenStream, tokens: TokenStream) -> TokenStream {
let ident = &ty.ident;
let ident_str = ident.to_string();
Some(quote! {
self.register_type_size::<T::#ident>(#ident_str)?;
self.register_type_size::<T::#ident>(#ident_str);
})
} else {
None
Expand All @@ -114,16 +114,15 @@ pub fn module(_args: TokenStream, tokens: TokenStream) -> TokenStream {
/// `EventsDecoder` extension trait.
pub trait #module_events_decoder {
/// Registers this modules types.
fn #with_module(&mut self) -> Result<(), #subxt::EventsError>;
fn #with_module(&mut self);
}

impl<T: #module> #module_events_decoder for
#subxt::EventsDecoder<T>
{
fn #with_module(&mut self) -> Result<(), #subxt::EventsError> {
fn #with_module(&mut self) {
#(#bounds)*
#(#types)*
Ok(())
}
}
}
Expand Down Expand Up @@ -167,16 +166,15 @@ mod tests {
/// `EventsDecoder` extension trait.
pub trait BalancesEventsDecoder {
/// Registers this modules types.
fn with_balances(&mut self) -> Result<(), substrate_subxt::EventsError>;
fn with_balances(&mut self);
}

impl<T: Balances> BalancesEventsDecoder for
substrate_subxt::EventsDecoder<T>
{
fn with_balances(&mut self) -> Result<(), substrate_subxt::EventsError> {
self.with_system()?;
self.register_type_size::<T::Balance>("Balance")?;
Ok(())
fn with_balances(&mut self) {
self.with_system();
self.register_type_size::<T::Balance>("Balance");
}
}
};
Expand Down
38 changes: 7 additions & 31 deletions src/events.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ use std::{
HashMap,
HashSet,
},
convert::TryFrom,
marker::{
PhantomData,
Send,
Expand Down Expand Up @@ -87,47 +86,24 @@ pub struct EventsDecoder<T> {
marker: PhantomData<fn() -> T>,
}

impl<T: System> TryFrom<Metadata> for EventsDecoder<T> {
type Error = EventsError;

fn try_from(metadata: Metadata) -> Result<Self, Self::Error> {
let mut decoder = Self {
impl<T: System> EventsDecoder<T> {
/// Creates a new `EventsDecoder`.
pub fn new(metadata: Metadata) -> Self {
Self {
metadata,
type_sizes: HashMap::new(),
marker: PhantomData,
};
// register default event arg type sizes for dynamic decoding of events
decoder.register_type_size::<bool>("bool")?;
decoder.register_type_size::<u32>("ReferendumIndex")?;
decoder.register_type_size::<[u8; 16]>("Kind")?;
decoder.register_type_size::<[u8; 32]>("AuthorityId")?;
decoder.register_type_size::<u8>("u8")?;
decoder.register_type_size::<u32>("u32")?;
decoder.register_type_size::<u32>("AccountIndex")?;
decoder.register_type_size::<u32>("SessionIndex")?;
decoder.register_type_size::<u32>("PropIndex")?;
decoder.register_type_size::<u32>("ProposalIndex")?;
decoder.register_type_size::<u32>("AuthorityIndex")?;
decoder.register_type_size::<u64>("AuthorityWeight")?;
decoder.register_type_size::<u32>("MemberCount")?;
decoder.register_type_size::<T::AccountId>("AccountId")?;
decoder.register_type_size::<T::BlockNumber>("BlockNumber")?;
decoder.register_type_size::<T::Hash>("Hash")?;
decoder.register_type_size::<u8>("VoteThreshold")?;

Ok(decoder)
}
}
}

impl<T: System> EventsDecoder<T> {
/// Register a type.
pub fn register_type_size<U>(&mut self, name: &str) -> Result<usize, EventsError>
pub fn register_type_size<U>(&mut self, name: &str) -> usize
where
U: Default + Codec + Send + 'static,
{
let size = U::default().encode().len();
self.type_sizes.insert(name.to_string(), size);
Ok(size)
size
}

/// Check missing type sizes.
Expand Down
9 changes: 2 additions & 7 deletions src/frame/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,7 @@
//! Implements support for built-in runtime modules.

use crate::{
events::{
EventsDecoder,
EventsError,
},
events::EventsDecoder,
metadata::{
Metadata,
MetadataError,
Expand Down Expand Up @@ -62,9 +59,7 @@ pub trait Call<T>: Encode {
/// Function name.
const FUNCTION: &'static str;
/// Load event decoder.
fn events_decoder(_decoder: &mut EventsDecoder<T>) -> Result<(), EventsError> {
Ok(())
}
fn events_decoder(_decoder: &mut EventsDecoder<T>) {}
}

/// Event trait.
Expand Down
9 changes: 3 additions & 6 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,7 @@ use sp_runtime::{
MultiSignature,
};
use sp_version::RuntimeVersion;
use std::{
convert::TryFrom,
marker::PhantomData,
};
use std::marker::PhantomData;

mod error;
mod events;
Expand Down Expand Up @@ -364,8 +361,8 @@ where
/// Returns an events decoder for a call.
pub fn events_decoder<C: Call<T>>(&self) -> Result<EventsDecoder<T>, Error> {
let metadata = self.metadata().clone();
let mut decoder = EventsDecoder::try_from(metadata)?;
C::events_decoder(&mut decoder)?;
let mut decoder = EventsDecoder::new(metadata);
C::events_decoder(&mut decoder);
Ok(decoder)
}

Expand Down

0 comments on commit 414142e

Please sign in to comment.