[beta] Fixing RPC Filter conversion to EthFilter (#2501)
* Fixing RPC Filter conversion to EthFilter Conflicts: rpc/src/v1/impls/eth.rs rpc/src/v1/types/filter.rs * Removing limit * Fixing rpc tests
This commit is contained in:
		
							parent
							
								
									73a3dac38c
								
							
						
					
					
						commit
						8031910892
					
				@ -25,7 +25,7 @@ use std::mem;
 | 
			
		||||
use std::collections::VecDeque;
 | 
			
		||||
 | 
			
		||||
/// Blockchain Filter.
 | 
			
		||||
#[derive(Binary)]
 | 
			
		||||
#[derive(Binary, Debug, PartialEq)]
 | 
			
		||||
pub struct Filter {
 | 
			
		||||
	/// Blockchain will be searched from this block.
 | 
			
		||||
	pub from_block: BlockID,
 | 
			
		||||
 | 
			
		||||
@ -60,6 +60,7 @@ fn miner_service(spec: &Spec, accounts: Arc<AccountProvider>) -> Arc<Miner> {
 | 
			
		||||
			tx_queue_size: 1024,
 | 
			
		||||
			tx_queue_strategy: PrioritizationStrategy::GasPriceOnly,
 | 
			
		||||
			tx_gas_limit: !U256::zero(),
 | 
			
		||||
			tx_queue_strategy: PrioritizationStrategy::GasPriceOnly,
 | 
			
		||||
			pending_set: PendingSet::SealingOrElseQueue,
 | 
			
		||||
			reseal_min_period: Duration::from_secs(0),
 | 
			
		||||
			work_queue_size: 50,
 | 
			
		||||
 | 
			
		||||
@ -83,9 +83,15 @@ impl Into<EthFilter> for Filter {
 | 
			
		||||
					VariadicValue::Null => None,
 | 
			
		||||
					VariadicValue::Single(t) => Some(vec![t.into()]),
 | 
			
		||||
					VariadicValue::Multiple(t) => Some(t.into_iter().map(Into::into).collect())
 | 
			
		||||
				}).filter_map(|m| m).collect()).into_iter();
 | 
			
		||||
				vec![iter.next(), iter.next(), iter.next(), iter.next()]
 | 
			
		||||
			}
 | 
			
		||||
				}).collect()).into_iter();
 | 
			
		||||
 | 
			
		||||
				vec![
 | 
			
		||||
					iter.next().unwrap_or(None),
 | 
			
		||||
					iter.next().unwrap_or(None),
 | 
			
		||||
					iter.next().unwrap_or(None),
 | 
			
		||||
					iter.next().unwrap_or(None)
 | 
			
		||||
				]
 | 
			
		||||
			},
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@ -97,6 +103,8 @@ mod tests {
 | 
			
		||||
	use util::hash::*;
 | 
			
		||||
	use super::*;
 | 
			
		||||
	use v1::types::BlockNumber;
 | 
			
		||||
	use ethcore::filter::Filter as EthFilter;
 | 
			
		||||
	use ethcore::client::BlockID;
 | 
			
		||||
 | 
			
		||||
	#[test]
 | 
			
		||||
	fn topic_deserialization() {
 | 
			
		||||
@ -123,4 +131,31 @@ mod tests {
 | 
			
		||||
			topics: None
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	#[test]
 | 
			
		||||
	fn filter_conversion() {
 | 
			
		||||
		let filter = Filter {
 | 
			
		||||
			from_block: Some(BlockNumber::Earliest),
 | 
			
		||||
			to_block: Some(BlockNumber::Latest),
 | 
			
		||||
			address: Some(VariadicValue::Multiple(vec![])),
 | 
			
		||||
			topics: Some(vec![
 | 
			
		||||
				VariadicValue::Null,
 | 
			
		||||
				VariadicValue::Single("000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b".into()),
 | 
			
		||||
				VariadicValue::Null,
 | 
			
		||||
			]),
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		let eth_filter: EthFilter = filter.into();
 | 
			
		||||
		assert_eq!(eth_filter, EthFilter {
 | 
			
		||||
			from_block: BlockID::Earliest,
 | 
			
		||||
			to_block: BlockID::Latest,
 | 
			
		||||
			address: Some(vec![]),
 | 
			
		||||
			topics: vec![
 | 
			
		||||
				None,
 | 
			
		||||
				Some(vec!["000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b".into()]),
 | 
			
		||||
				None,
 | 
			
		||||
				None,
 | 
			
		||||
			],
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user