Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

companion PR for #5732: pubsub RPC for grandpa justifications #1346

Merged
7 commits merged into from
Aug 10, 2020
Merged
Show file tree
Hide file tree
Changes from 5 commits
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
1 change: 1 addition & 0 deletions Cargo.lock

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

7 changes: 5 additions & 2 deletions node/service/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ fn new_partial<RuntimeApi, Executor>(config: &mut Configuration) -> Result<
consensus_common::DefaultImportQueue<Block, FullClient<RuntimeApi, Executor>>,
sc_transaction_pool::FullPool<Block, FullClient<RuntimeApi, Executor>>,
(
impl Fn(polkadot_rpc::DenyUnsafe) -> polkadot_rpc::RpcExtension,
impl Fn(polkadot_rpc::DenyUnsafe, polkadot_rpc::SubscriptionManager) -> polkadot_rpc::RpcExtension,
(
babe::BabeBlockImport<
Block, FullClient<RuntimeApi, Executor>, FullGrandpaBlockImport<RuntimeApi, Executor>
Expand Down Expand Up @@ -227,6 +227,7 @@ fn new_partial<RuntimeApi, Executor>(config: &mut Configuration) -> Result<
config.prometheus_registry(),
)?;

let justification_stream = grandpa_link.justification_stream();
let shared_authority_set = grandpa_link.shared_authority_set().clone();
let shared_voter_state = grandpa::SharedVoterState::empty();

Expand All @@ -242,7 +243,7 @@ fn new_partial<RuntimeApi, Executor>(config: &mut Configuration) -> Result<
let transaction_pool = transaction_pool.clone();
let select_chain = select_chain.clone();

move |deny_unsafe| -> polkadot_rpc::RpcExtension {
move |deny_unsafe, subscriptions| -> polkadot_rpc::RpcExtension {
let deps = polkadot_rpc::FullDeps {
client: client.clone(),
pool: transaction_pool.clone(),
Expand All @@ -256,6 +257,8 @@ fn new_partial<RuntimeApi, Executor>(config: &mut Configuration) -> Result<
grandpa: polkadot_rpc::GrandpaDeps {
shared_voter_state: shared_voter_state.clone(),
shared_authority_set: shared_authority_set.clone(),
justification_stream: justification_stream.clone(),
subscriptions,
},
};

Expand Down
1 change: 1 addition & 0 deletions rpc/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ edition = "2018"

[dependencies]
jsonrpc-core = "14.0.3"
jsonrpc-pubsub = "14.0.3"
polkadot-primitives = { path = "../primitives" }
sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" }
sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" }
Expand Down
9 changes: 9 additions & 0 deletions rpc/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ use sc_client_api::light::{Fetcher, RemoteBlockchain};
use sc_consensus_babe::Epoch;
use sp_block_builder::BlockBuilder;
pub use sc_rpc::DenyUnsafe;
pub use jsonrpc_pubsub::manager::SubscriptionManager;

/// A type representing all RPC extensions.
pub type RpcExtension = jsonrpc_core::IoHandler<sc_rpc::Metadata>;
Expand Down Expand Up @@ -62,6 +63,10 @@ pub struct GrandpaDeps {
pub shared_voter_state: sc_finality_grandpa::SharedVoterState,
/// Authority set info.
pub shared_authority_set: sc_finality_grandpa::SharedAuthoritySet<Hash, BlockNumber>,
/// Receives notifications about justification events from Grandpa.
pub justification_stream: sc_finality_grandpa::GrandpaJustificationStream<Block>,
/// Subscription manager to keep track of pubsub subscribers.
pub subscriptions: jsonrpc_pubsub::manager::SubscriptionManager,
}

/// Full client dependencies
Expand Down Expand Up @@ -114,6 +119,8 @@ pub fn create_full<C, P, SC>(deps: FullDeps<C, P, SC>) -> RpcExtension where
let GrandpaDeps {
shared_voter_state,
shared_authority_set,
justification_stream,
subscriptions,
} = grandpa;

io.extend_with(
Expand All @@ -138,6 +145,8 @@ pub fn create_full<C, P, SC>(deps: FullDeps<C, P, SC>) -> RpcExtension where
GrandpaApi::to_delegate(GrandpaRpcHandler::new(
shared_authority_set,
shared_voter_state,
justification_stream,
subscriptions,
))
);
io
Expand Down
7 changes: 5 additions & 2 deletions service/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ pub fn new_partial<RuntimeApi, Executor>(config: &mut Configuration, test: bool)
consensus_common::DefaultImportQueue<Block, FullClient<RuntimeApi, Executor>>,
sc_transaction_pool::FullPool<Block, FullClient<RuntimeApi, Executor>>,
(
impl Fn(polkadot_rpc::DenyUnsafe) -> polkadot_rpc::RpcExtension,
impl Fn(polkadot_rpc::DenyUnsafe, polkadot_rpc::SubscriptionManager) -> polkadot_rpc::RpcExtension,
(
babe::BabeBlockImport<
Block, FullClient<RuntimeApi, Executor>, FullGrandpaBlockImport<RuntimeApi, Executor>
Expand Down Expand Up @@ -202,6 +202,7 @@ pub fn new_partial<RuntimeApi, Executor>(config: &mut Configuration, test: bool)
config.prometheus_registry(),
)?;

let justification_stream = grandpa_link.justification_stream();
let shared_authority_set = grandpa_link.shared_authority_set().clone();
let shared_voter_state = grandpa::SharedVoterState::empty();

Expand All @@ -217,7 +218,7 @@ pub fn new_partial<RuntimeApi, Executor>(config: &mut Configuration, test: bool)
let transaction_pool = transaction_pool.clone();
let select_chain = select_chain.clone();

move |deny_unsafe| -> polkadot_rpc::RpcExtension {
move |deny_unsafe, subscriptions| -> polkadot_rpc::RpcExtension {
let deps = polkadot_rpc::FullDeps {
client: client.clone(),
pool: transaction_pool.clone(),
Expand All @@ -231,6 +232,8 @@ pub fn new_partial<RuntimeApi, Executor>(config: &mut Configuration, test: bool)
grandpa: polkadot_rpc::GrandpaDeps {
shared_voter_state: shared_voter_state.clone(),
shared_authority_set: shared_authority_set.clone(),
justification_stream: justification_stream.clone(),
subscriptions,
},
};

Expand Down