@@ -373,12 +373,15 @@ fn build_collator_service<P, C, R, Extrinsic>(
373373
374374/// Async function that will run the collator node with the given `RelayChainContext` and `ParachainContext`
375375/// built by the given `BuildParachainContext` and arguments to the underlying polkadot node.
376- pub async fn start_collator < P > (
376+ pub fn start_collator < P > (
377377 build_parachain_context : P ,
378378 para_id : ParaId ,
379379 key : Arc < CollatorPair > ,
380380 config : Configuration ,
381- ) -> Result < ( ) , polkadot_service:: Error >
381+ ) -> Result <
382+ ( Pin < Box < dyn Future < Output = ( ) > + Send > > , sc_service:: TaskManager ) ,
383+ polkadot_service:: Error
384+ >
382385where
383386 P : ' static + BuildParachainContext ,
384387 P :: ParachainContext : Send + ' static ,
@@ -400,14 +403,15 @@ where
400403 None ,
401404 ) ?;
402405 let spawn_handle = task_manager. spawn_handle ( ) ;
403- build_collator_service (
406+ let future = build_collator_service (
404407 spawn_handle,
405408 handlers,
406409 client,
407410 para_id,
408411 key,
409412 build_parachain_context
410- ) ?. await ;
413+ ) ?;
414+ Ok ( ( future. boxed ( ) , task_manager) )
411415 } else if config. chain_spec . is_westend ( ) {
412416 let ( task_manager, client, handlers) = service:: westend_new_full (
413417 config,
@@ -418,14 +422,15 @@ where
418422 None ,
419423 ) ?;
420424 let spawn_handle = task_manager. spawn_handle ( ) ;
421- build_collator_service (
425+ let future = build_collator_service (
422426 spawn_handle,
423427 handlers,
424428 client,
425429 para_id,
426430 key,
427431 build_parachain_context
428- ) ?. await ;
432+ ) ?;
433+ Ok ( ( future. boxed ( ) , task_manager) )
429434 } else {
430435 let ( task_manager, client, handles) = service:: polkadot_new_full (
431436 config,
@@ -436,17 +441,16 @@ where
436441 None ,
437442 ) ?;
438443 let spawn_handle = task_manager. spawn_handle ( ) ;
439- build_collator_service (
444+ let future = build_collator_service (
440445 spawn_handle,
441446 handles,
442447 client,
443448 para_id,
444449 key,
445- build_parachain_context,
446- ) ?. await ;
450+ build_parachain_context
451+ ) ?;
452+ Ok ( ( future. boxed ( ) , task_manager) )
447453 }
448-
449- Ok ( ( ) )
450454}
451455
452456#[ cfg( not( feature = "service-rewr" ) ) ]
@@ -506,7 +510,7 @@ mod tests {
506510 fn check_send < T : Send > ( _: T ) { }
507511
508512 let cli = Cli :: from_iter ( & [ "-dev" ] ) ;
509- let task_executor = |_, _| unimplemented ! ( ) ;
513+ let task_executor = |_, _| { } ;
510514 let config = cli. create_configuration ( & cli. run . base , task_executor. into ( ) ) . unwrap ( ) ;
511515
512516 check_send ( start_collator (
0 commit comments