adjust to minor on_demand API changes in RPC

This commit is contained in:
Robert Habermeier 2017-03-17 00:14:29 +01:00
parent fa42b6acec
commit 2ee3a7282b
2 changed files with 19 additions and 9 deletions

View File

@ -268,7 +268,10 @@ impl LightDispatcher {
})); }));
match nonce_future { match nonce_future {
Some(x) => x.map(|acc| acc.nonce).map_err(|_| errors::no_light_peers()).boxed(), Some(x) =>
x.map(|acc| acc.map_or_else(Default::default, |acc| acc.nonce))
.map_err(|_| errors::no_light_peers())
.boxed(),
None => future::err(errors::network_disabled()).boxed() None => future::err(errors::network_disabled()).boxed()
} }
} }

View File

@ -105,15 +105,22 @@ impl EthClient {
match cht_root { match cht_root {
None => return future::ok(None).boxed(), None => return future::ok(None).boxed(),
Some(root) => { Some(root) => {
let req = request::HeaderByNumber::new(n, root) let req = request::HeaderProof::new(n, root)
.expect("only fails for 0; client always stores genesis; client already queried; qed"); .expect("only fails for 0; client always stores genesis; client already queried; qed");
self.sync.with_context(|ctx| let (sync, on_demand) = (self.sync.clone(), self.on_demand.clone());
self.on_demand.header_by_number(ctx, req) self.sync.with_context(|ctx| {
.map(Some) let fut = self.on_demand.hash_by_number(ctx, req)
.map_err(err_premature_cancel) .map(request::HeaderByHash)
.boxed() .map_err(err_premature_cancel);
)
fut.and_then(move |req| {
match sync.with_context(|ctx| on_demand.header_by_hash(ctx, req)) {
Some(fut) => fut.map_err(err_premature_cancel).boxed(),
None => future::err(errors::network_disabled()).boxed(),
}
}).map(Some).boxed()
})
} }
} }
} }
@ -149,7 +156,7 @@ impl EthClient {
sync.with_context(|ctx| on_demand.account(ctx, request::Account { sync.with_context(|ctx| on_demand.account(ctx, request::Account {
header: header, header: header,
address: address, address: address,
}).map(Some)) }))
.map(|x| x.map_err(err_premature_cancel).boxed()) .map(|x| x.map_err(err_premature_cancel).boxed())
.unwrap_or_else(|| future::err(errors::network_disabled()).boxed()) .unwrap_or_else(|| future::err(errors::network_disabled()).boxed())
}).boxed() }).boxed()