From 12e5e19c2033383fc914bcc286ad16ae565d4734 Mon Sep 17 00:00:00 2001
From: Nazar Mokrynskyi <nazar@mokrynskyi.com>
Date: Sat, 3 Feb 2024 22:47:05 +0200
Subject: [PATCH] Expose internal functions used by `spawn_tasks` (#3166)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This allows to build a custom version of `spawn_tasks` with less
copy-paste required.

Resolves https://github.com/paritytech/polkadot-sdk/issues/2110

---------

Co-authored-by: Bastian Köcher <git@kchr.de>
---
 prdoc/pr_3166.prdoc                     |  9 +++++++++
 substrate/client/service/src/builder.rs | 11 +++++++----
 substrate/client/service/src/lib.rs     |  2 +-
 3 files changed, 17 insertions(+), 5 deletions(-)
 create mode 100644 prdoc/pr_3166.prdoc

diff --git a/prdoc/pr_3166.prdoc b/prdoc/pr_3166.prdoc
new file mode 100644
index 00000000000..adf7f50e4e9
--- /dev/null
+++ b/prdoc/pr_3166.prdoc
@@ -0,0 +1,9 @@
+title: Expose internal functions used by `spawn_tasks`
+
+doc:
+  - audience: Node Dev
+    description: |
+      This allows to build a custom version of `spawn_tasks` with less copy-paste required
+
+crates:
+  - name: sc-service
diff --git a/substrate/client/service/src/builder.rs b/substrate/client/service/src/builder.rs
index bc848e8d4b2..31d63c6a81d 100644
--- a/substrate/client/service/src/builder.rs
+++ b/substrate/client/service/src/builder.rs
@@ -460,7 +460,7 @@ where
 	spawn_handle.spawn(
 		"on-transaction-imported",
 		Some("transaction-pool"),
-		transaction_notifications(
+		propagate_transaction_notifications(
 			transaction_pool.clone(),
 			tx_handler_controller,
 			telemetry.clone(),
@@ -532,7 +532,8 @@ where
 	Ok(rpc_handlers)
 }
 
-async fn transaction_notifications<Block, ExPool>(
+/// Returns a future that forwards imported transactions to the transaction networking protocol.
+pub async fn propagate_transaction_notifications<Block, ExPool>(
 	transaction_pool: Arc<ExPool>,
 	tx_handler_controller: sc_network_transactions::TransactionsHandlerController<
 		<Block as BlockT>::Hash,
@@ -560,7 +561,8 @@ async fn transaction_notifications<Block, ExPool>(
 		.await;
 }
 
-fn init_telemetry<Block, Client, Network>(
+/// Initialize telemetry with provided configuration and return telemetry handle
+pub fn init_telemetry<Block, Client, Network>(
 	config: &mut Configuration,
 	network: Network,
 	client: Arc<Client>,
@@ -598,7 +600,8 @@ where
 	Ok(telemetry.handle())
 }
 
-fn gen_rpc_module<TBl, TBackend, TCl, TRpc, TExPool>(
+/// Generate RPC module using provided configuration
+pub fn gen_rpc_module<TBl, TBackend, TCl, TRpc, TExPool>(
 	deny_unsafe: DenyUnsafe,
 	spawn_handle: SpawnTaskHandle,
 	client: Arc<TCl>,
diff --git a/substrate/client/service/src/lib.rs b/substrate/client/service/src/lib.rs
index 875cb9ca79e..a76e1544bfb 100644
--- a/substrate/client/service/src/lib.rs
+++ b/substrate/client/service/src/lib.rs
@@ -368,7 +368,7 @@ mod waiting {
 }
 
 /// Starts RPC servers.
-fn start_rpc_servers<R>(
+pub fn start_rpc_servers<R>(
 	config: &Configuration,
 	gen_rpc_module: R,
 	rpc_id_provider: Option<Box<dyn RpcSubscriptionIdProvider>>,
-- 
GitLab