mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 23:57:56 +00:00
impl Debug for sc_service::Configuration (#6400)
* Initial commit
Forked at: 252416d385
No parent branch.
* Make sc_service::Configuration derive Debug
* Replace task_executor fn's input by proper TaskExecutor type (cleaner)
* impl From<Fn> for TaskExecutor
* Update client/cli/src/runner.rs
* Add some doc, examples and tests
* Replace Deref by fn spawn as suggested
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
This commit is contained in:
@@ -28,15 +28,12 @@ use names::{Generator, Name};
|
||||
use sc_client_api::execution_extensions::ExecutionStrategies;
|
||||
use sc_service::config::{
|
||||
BasePath, Configuration, DatabaseConfig, ExtTransport, KeystoreConfig, NetworkConfiguration,
|
||||
NodeKeyConfig, OffchainWorkerConfig, PrometheusConfig, PruningMode, Role, RpcMethods, TaskType,
|
||||
TelemetryEndpoints, TransactionPoolOptions, WasmExecutionMethod,
|
||||
NodeKeyConfig, OffchainWorkerConfig, PrometheusConfig, PruningMode, Role, RpcMethods,
|
||||
TaskExecutor, TelemetryEndpoints, TransactionPoolOptions, WasmExecutionMethod,
|
||||
};
|
||||
use sc_service::{ChainSpec, TracingReceiver};
|
||||
use std::future::Future;
|
||||
use std::net::SocketAddr;
|
||||
use std::path::PathBuf;
|
||||
use std::pin::Pin;
|
||||
use std::sync::Arc;
|
||||
|
||||
/// The maximum number of characters for a node name.
|
||||
pub(crate) const NODE_NAME_MAX_LENGTH: usize = 32;
|
||||
@@ -409,7 +406,7 @@ pub trait CliConfiguration: Sized {
|
||||
fn create_configuration<C: SubstrateCli>(
|
||||
&self,
|
||||
cli: &C,
|
||||
task_executor: Arc<dyn Fn(Pin<Box<dyn Future<Output = ()> + Send>>, TaskType) + Send + Sync>,
|
||||
task_executor: TaskExecutor,
|
||||
) -> Result<Configuration> {
|
||||
let is_dev = self.is_dev()?;
|
||||
let chain_id = self.chain_id(is_dev)?;
|
||||
|
||||
@@ -37,11 +37,8 @@ use log::info;
|
||||
pub use params::*;
|
||||
use regex::Regex;
|
||||
pub use runner::*;
|
||||
use sc_service::{ChainSpec, Configuration, TaskType};
|
||||
use std::future::Future;
|
||||
use sc_service::{ChainSpec, Configuration, TaskExecutor};
|
||||
use std::io::Write;
|
||||
use std::pin::Pin;
|
||||
use std::sync::Arc;
|
||||
pub use structopt;
|
||||
use structopt::{
|
||||
clap::{self, AppSettings},
|
||||
@@ -199,7 +196,7 @@ pub trait SubstrateCli: Sized {
|
||||
fn create_configuration<T: CliConfiguration>(
|
||||
&self,
|
||||
command: &T,
|
||||
task_executor: Arc<dyn Fn(Pin<Box<dyn Future<Output = ()> + Send>>, TaskType) + Send + Sync>,
|
||||
task_executor: TaskExecutor,
|
||||
) -> error::Result<Configuration> {
|
||||
command.create_configuration(self, task_executor)
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ use sc_service::{AbstractService, Configuration, Role, ServiceBuilderCommand, Ta
|
||||
use sp_runtime::traits::{Block as BlockT, Header as HeaderT};
|
||||
use sp_utils::metrics::{TOKIO_THREADS_ALIVE, TOKIO_THREADS_TOTAL};
|
||||
use sp_version::RuntimeVersion;
|
||||
use std::{fmt::Debug, marker::PhantomData, str::FromStr, sync::Arc};
|
||||
use std::{fmt::Debug, marker::PhantomData, str::FromStr};
|
||||
|
||||
#[cfg(target_family = "unix")]
|
||||
async fn main<F, E>(func: F) -> std::result::Result<(), Box<dyn std::error::Error>>
|
||||
@@ -119,23 +119,21 @@ impl<C: SubstrateCli> Runner<C> {
|
||||
let tokio_runtime = build_runtime()?;
|
||||
let runtime_handle = tokio_runtime.handle().clone();
|
||||
|
||||
let task_executor = Arc::new(
|
||||
move |fut, task_type| {
|
||||
match task_type {
|
||||
TaskType::Async => { runtime_handle.spawn(fut); }
|
||||
TaskType::Blocking => {
|
||||
runtime_handle.spawn( async move {
|
||||
// `spawn_blocking` is looking for the current runtime, and as such has to be called
|
||||
// from within `spawn`.
|
||||
tokio::task::spawn_blocking(move || futures::executor::block_on(fut))
|
||||
});
|
||||
}
|
||||
let task_executor = move |fut, task_type| {
|
||||
match task_type {
|
||||
TaskType::Async => { runtime_handle.spawn(fut); }
|
||||
TaskType::Blocking => {
|
||||
runtime_handle.spawn(async move {
|
||||
// `spawn_blocking` is looking for the current runtime, and as such has to
|
||||
// be called from within `spawn`.
|
||||
tokio::task::spawn_blocking(move || futures::executor::block_on(fut))
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
Ok(Runner {
|
||||
config: command.create_configuration(cli, task_executor)?,
|
||||
config: command.create_configuration(cli, task_executor.into())?,
|
||||
tokio_runtime,
|
||||
phantom: PhantomData,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user