[contract-client] refactor (#7978)
* Refactor usage of registry contract * remove unsed file * Rename methods & fix comments * refactor contract_client: * Intoduced separate traits for asyncronous and syncronous contract clients * Removed registrar from ethcore::client * s/ContractClient/AsyncContractClient * make the tests compile and pass * omit changes in ethcore * Use only one trait for ContractClient * Use an associated type in the trait to determine syncronous or asyncronous communication * Export the types from contract-client crate * Document that "A" in the hash correspons to a DNS A Record A.K.A Address Record * contract_client -> registrar * address review feedback
This commit is contained in:
committed by
André Silva
parent
66f3c50842
commit
e0f71b0c17
@@ -24,7 +24,7 @@ use jsonrpc_http_server::{self as http, Host, DomainsValidation};
|
||||
use parity_reactor::Remote;
|
||||
|
||||
use devtools::http_client;
|
||||
use hash_fetch::urlhint::ContractClient;
|
||||
use registrar::{RegistrarClient, Asynchronous};
|
||||
use fetch::{Fetch, Client as FetchClient};
|
||||
use node_health::{NodeHealth, TimeChecker, CpuPool};
|
||||
|
||||
@@ -144,7 +144,7 @@ pub fn assert_security_headers_for_embed(headers: &[String]) {
|
||||
/// Webapps HTTP+RPC server build.
|
||||
pub struct ServerBuilder<T: Fetch = FetchClient> {
|
||||
dapps_path: PathBuf,
|
||||
registrar: Arc<ContractClient>,
|
||||
registrar: Arc<RegistrarClient<Call=Asynchronous>>,
|
||||
sync_status: Arc<SyncStatus>,
|
||||
web_proxy_tokens: Arc<WebProxyTokens>,
|
||||
signer_address: Option<(String, u16)>,
|
||||
@@ -155,7 +155,7 @@ pub struct ServerBuilder<T: Fetch = FetchClient> {
|
||||
|
||||
impl ServerBuilder {
|
||||
/// Construct new dapps server
|
||||
pub fn new<P: AsRef<Path>>(dapps_path: P, registrar: Arc<ContractClient>) -> Self {
|
||||
pub fn new<P: AsRef<Path>>(dapps_path: P, registrar: Arc<RegistrarClient<Call=Asynchronous>>) -> Self {
|
||||
ServerBuilder {
|
||||
dapps_path: dapps_path.as_ref().to_owned(),
|
||||
registrar: registrar,
|
||||
@@ -227,7 +227,7 @@ impl Server {
|
||||
signer_address: Option<(String, u16)>,
|
||||
dapps_path: PathBuf,
|
||||
extra_dapps: Vec<PathBuf>,
|
||||
registrar: Arc<ContractClient>,
|
||||
registrar: Arc<RegistrarClient<Call=Asynchronous>>,
|
||||
sync_status: Arc<SyncStatus>,
|
||||
web_proxy_tokens: Arc<WebProxyTokens>,
|
||||
remote: Remote,
|
||||
|
||||
@@ -18,10 +18,9 @@ use std::str;
|
||||
use std::sync::Arc;
|
||||
use std::collections::HashMap;
|
||||
|
||||
use futures::Future;
|
||||
use ethereum_types::{H256, Address};
|
||||
use bytes::{Bytes, ToPretty};
|
||||
use hash_fetch::urlhint::ContractClient;
|
||||
use registrar::{RegistrarClient, Asynchronous};
|
||||
use parking_lot::Mutex;
|
||||
use rustc_hex::FromHex;
|
||||
|
||||
@@ -62,12 +61,14 @@ impl FakeRegistrar {
|
||||
}
|
||||
}
|
||||
|
||||
impl ContractClient for FakeRegistrar {
|
||||
fn registrar(&self) -> Result<Address, String> {
|
||||
impl RegistrarClient for FakeRegistrar {
|
||||
type Call = Asynchronous;
|
||||
|
||||
fn registrar_address(&self) -> Result<Address, String> {
|
||||
Ok(REGISTRAR.parse().unwrap())
|
||||
}
|
||||
|
||||
fn call(&self, address: Address, data: Bytes) -> Box<Future<Item = Bytes, Error = String> + Send> {
|
||||
fn call_contract(&self, address: Address, data: Bytes) -> Self::Call {
|
||||
let call = (address.to_hex(), data.to_hex());
|
||||
self.calls.lock().push(call.clone());
|
||||
let res = self.responses.lock().get(&call).cloned().expect(&format!("No response for call: {:?}", call));
|
||||
|
||||
Reference in New Issue
Block a user