Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
rename to BabeApi, remove err_derive
  • Loading branch information
seunlanlege committed Feb 14, 2020
commit c0a99cdd18825a1a21648ce10a815e2ebb140c00
15 changes: 0 additions & 15 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion bin/node/cli/src/service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ macro_rules! new_full_start {
shared_epoch_changes: sc_consensus_babe::BabeLink::epoch_changes(babe_link).clone()
}
};
Ok(node_rpc::create_full(deps)?)
Ok(node_rpc::create_full(deps))
})?;

(builder, import_setup, inherent_data_providers)
Expand Down
12 changes: 6 additions & 6 deletions bin/node/rpc/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@

#![warn(missing_docs)]

use std::{sync::Arc, io, fmt};
use std::{sync::Arc, fmt};

use node_primitives::{Block, BlockNumber, AccountId, Index, Balance};
use node_runtime::UncheckedExtrinsic;
Expand All @@ -40,7 +40,7 @@ use sp_consensus::SelectChain;
use sc_keystore::KeyStorePtr;
use sp_consensus_babe::BabeApi;
use sc_consensus_epochs::SharedEpochChanges;
use sc_consensus_babe::{Config, Epoch, rpc::{BabeRPC, BabeRPCHandler}};
use sc_consensus_babe::{Config, Epoch, rpc::{self as sc_consensus_babe_rpc, BabeRPCHandler}};

/// Light client extra dependencies.
pub struct LightDeps<C, F, P> {
Expand Down Expand Up @@ -80,7 +80,7 @@ pub struct FullDeps<C, P, SC> {
/// Instantiate all Full RPC extensions.
pub fn create_full<C, P, M, SC>(
deps: FullDeps<C, P, SC>,
) -> Result<jsonrpc_core::IoHandler<M>, io::Error> where
) -> jsonrpc_core::IoHandler<M> where
C: ProvideRuntimeApi<Block>,
C: HeaderBackend<Block> + HeaderMetadata<Block, Error=BlockChainError> + 'static,
C: Send + Sync + 'static,
Expand Down Expand Up @@ -124,12 +124,12 @@ pub fn create_full<C, P, M, SC>(
TransactionPaymentApi::to_delegate(TransactionPayment::new(client.clone()))
);
io.extend_with(
BabeRPC::to_delegate(
BabeRPCHandler::new(client, shared_epoch_changes, keystore, babe_config, select_chain)?
sc_consensus_babe_rpc::BabeApi::to_delegate(
BabeRPCHandler::new(client, shared_epoch_changes, keystore, babe_config, select_chain)
)
);

Ok(io)
io
}

/// Instantiate all Light RPC extensions.
Expand Down
1 change: 0 additions & 1 deletion client/consensus/babe/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ license = "GPL-3.0"

[dependencies]
codec = { package = "parity-scale-codec", version = "1.0.0", features = ["derive"] }
err-derive = "0.2.2"
sp-consensus-babe = { version = "0.8", path = "../../../primitives/consensus/babe" }
sp-core = { version = "2.0.0", path = "../../../primitives/core" }
sp-application-crypto = { version = "2.0.0", path = "../../../primitives/application-crypto" }
Expand Down
45 changes: 12 additions & 33 deletions client/consensus/babe/src/rpc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,7 @@
//! rpc api for babe.

use crate::{Epoch, SharedEpochChanges, authorship, Config};
use futures::{
FutureExt as _, TryFutureExt as _,
executor::ThreadPool,
channel::oneshot,
future::ready,
};
use futures::{FutureExt as _, TryFutureExt as _};
use jsonrpc_core::{
Error as RpcError,
futures::future as rpc_future,
Expand All @@ -31,7 +26,7 @@ use jsonrpc_derive::rpc;
use sc_consensus_epochs::{descendent_query, Epoch as EpochT};
use sp_consensus_babe::{
AuthorityId,
BabeApi,
BabeApi as BabeRuntimeApi,
digests::PreDigest,
};
use serde::{Deserialize, Serialize};
Expand All @@ -41,13 +36,13 @@ use sp_core::crypto::Pair;
use sp_runtime::traits::{Block as BlockT, Header as _};
use sp_consensus::{SelectChain, Error as ConsensusError};
use sp_blockchain::{HeaderBackend, HeaderMetadata, Error as BlockChainError};
use std::{collections::HashMap, fmt, io, sync::Arc};
use std::{collections::HashMap, fmt, sync::Arc};

type FutureResult<T> = Box<dyn rpc_future::Future<Item = T, Error = RpcError> + Send>;

/// Provides rpc methods for interacting with Babe.
#[rpc]
pub trait BabeRPC {
pub trait BabeApi {
/// Returns data about which slots (primary or secondary) can be claimed in the current epoch
/// with the keys in the keystore.
#[rpc(name = "babe_epochAuthorship")]
Expand All @@ -66,8 +61,6 @@ pub struct BabeRPCHandler<B: BlockT, C, SC> {
keystore: KeyStorePtr,
/// config (actually holds the slot duration)
babe_config: Config,
/// threadpool for spawning cpu bound tasks.
threadpool: ThreadPool,
/// select chain
select_chain: SC,
}
Expand All @@ -80,28 +73,23 @@ impl<B: BlockT, C, SC> BabeRPCHandler<B, C, SC> {
keystore: KeyStorePtr,
babe_config: Config,
select_chain: SC,
) -> io::Result<Self> {
let threadpool = ThreadPool::builder()
// single thread is fine.
.pool_size(1)
.create()?;
) -> Self {

Ok(Self {
Self {
client,
shared_epoch_changes,
keystore,
babe_config,
threadpool,
select_chain,
})
}
}
}

impl<B, C, SC> BabeRPC for BabeRPCHandler<B, C, SC>
impl<B, C, SC> BabeApi for BabeRPCHandler<B, C, SC>
where
B: BlockT,
C: ProvideRuntimeApi<B> + HeaderBackend<B> + HeaderMetadata<B, Error=BlockChainError> + 'static,
C::Api: BabeApi<B>,
C::Api: BabeRuntimeApi<B>,
<C::Api as sp_api::ApiErrorExt>::Error: fmt::Debug,
SC: SelectChain<B> + Clone + 'static,
{
Expand All @@ -119,8 +107,6 @@ impl<B, C, SC> BabeRPC for BabeRPCHandler<B, C, SC>
self.client.clone(),
self.select_chain.clone(),
);
let (tx, rx) = oneshot::channel();

let future = async move {
let header = select_chain.best_chain().map_err(Error::Consensus)?;
let epoch_start = client.runtime_api()
Expand Down Expand Up @@ -148,14 +134,9 @@ impl<B, C, SC> BabeRPC for BabeRPCHandler<B, C, SC>
}

Ok(claims)
}.then(|result| {
let _ = tx.send(result).expect("receiever is never dropped; qed");
ready(())
}).boxed();

self.threadpool.spawn_ok(future);
}.boxed();

Box::new(async { rx.await.expect("sender is never dropped; qed") }.boxed().compat())
Box::new(future.compat())
}
}

Expand All @@ -169,13 +150,11 @@ pub struct EpochAuthorship {
}

/// Errors encountered by the RPC
#[derive(Debug, err_derive::Error, derive_more::From)]
#[derive(Debug, derive_more::Display, derive_more::From)]
pub enum Error {
/// Consensus error
#[error(display = "Consensus Error: {}", _0)]
Consensus(ConsensusError),
/// Errors that can be formatted as a String
#[error(display = "{}", _0)]
StringError(String)
}

Expand Down
6 changes: 3 additions & 3 deletions client/consensus/babe/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ use sc_client_api::{BlockchainEvents, backend::TransactionFor};
use log::debug;
use std::{time::Duration, cell::RefCell};
use sp_keyring::Ed25519Keyring;
use rpc::{BabeRPC, BabeRPCHandler};
use rpc::{BabeApi, BabeRPCHandler};
use jsonrpc_core::IoHandler;

type Item = DigestItem<Hash>;
Expand Down Expand Up @@ -840,10 +840,10 @@ fn rpc() {
let config = Config::get_or_compute(&*client).expect("lol");
let select_chain = peer.select_chain().expect("Full client has select_chain");
let keystore = create_temp_keystore::<AuthorityPair>(Ed25519Keyring::Alice).0;
let handler = BabeRPCHandler::new(client.clone(), epoch_changes, keystore, config, select_chain).unwrap();
let handler = BabeRPCHandler::new(client.clone(), epoch_changes, keystore, config, select_chain);
let mut io = IoHandler::new();

io.extend_with(BabeRPC::to_delegate(handler));
io.extend_with(BabeApi::to_delegate(handler));
let request = r#"{"jsonrpc":"2.0","method":"babe_epochAuthorship","params": [],"id":1}"#;
let response = r#"{"jsonrpc":"2.0","result":{"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY":{"primary":[0],"secondary":[1,2,4]}},"id":1}"#;

Expand Down