1717
1818namespace de \codenamephp \deploymentchecks \async ;
1919
20- use Closure ;
20+ use de \codenamephp \deploymentchecks \async \ErrorHandler \ErrorHandlerInterface ;
21+ use de \codenamephp \deploymentchecks \async \ErrorHandler \RethrowException ;
22+ use de \codenamephp \deploymentchecks \async \SuccessHandler \AddToResultCollection ;
23+ use de \codenamephp \deploymentchecks \async \SuccessHandler \SuccessHandlerInterface ;
2124use de \codenamephp \deploymentchecks \base \Check \CheckInterface ;
22- use de \codenamephp \deploymentchecks \base \Result \ResultCollection ;
2325use de \codenamephp \deploymentchecks \base \Result \ResultInterface ;
24- use Laravel \SerializableClosure \SerializableClosure ;
25- use Throwable ;
2626
27- final class ParallelCheck {
28-
29- public readonly SerializableClosure $ successCallback ;
30-
31- public readonly SerializableClosure $ errorCallback ;
27+ final readonly class ParallelCheck implements ParallelCheckInterface, WithErrorHandlerInterface {
3228
3329 public function __construct (
34- public readonly CheckInterface $ check ,
35- Closure |callable $ successCallback = null ,
36- Closure |callable $ errorCallback = null
37- ) {
38- $ this ->successCallback = new SerializableClosure ($ successCallback ?? static fn (ResultCollection $ resultCollection , ResultInterface $ result ) => $ resultCollection ->add ($ result ));
39- $ this ->errorCallback = new SerializableClosure ($ errorCallback ?? static fn (ResultCollection $ resultCollection , Throwable $ exception ) => throw $ exception );
40- }
30+ public CheckInterface $ check ,
31+ public ?SuccessHandlerInterface $ successHandler = new AddToResultCollection (),
32+ public ?ErrorHandlerInterface $ errorHandler = new RethrowException (),
33+ ) {}
4134
4235 public function __invoke () : ResultInterface {
4336 return $ this ->check ->run ();
4437 }
4538
46- public function success ( ResultCollection $ resultCollection , ResultInterface $ result ) : mixed {
47- return ( $ this ->successCallback )( $ resultCollection , $ result ) ;
39+ public function successHandler ( ) : SuccessHandlerInterface {
40+ return $ this ->successHandler ;
4841 }
4942
50- public function error ( ResultCollection $ resultCollection , Throwable $ exception ) : mixed {
51- return ( $ this ->errorCallback )( $ resultCollection , $ exception ) ;
43+ public function errorHandler ( ) : ErrorHandlerInterface {
44+ return $ this ->errorHandler ;
5245 }
5346}
0 commit comments