@@ -12,8 +12,19 @@ struct ManualTest : ParsableCommand {
1212
1313 static var logger : Logger ?
1414
15+ enum DelayMode : String , ExpressibleByArgument {
16+ case unsig
17+ case block
18+ }
19+
20+ @Option
21+ var mode : DelayMode = . unsig
22+
1523 func run( ) throws {
16- // try SigactionDelayer_Block.bootstrap(for: Signal.toForwardToSubprocesses)
24+ if mode == . block {
25+ try SigactionDelayer_Block . bootstrap ( for: Signal . toForwardToSubprocesses)
26+ }
27+
1728 LoggingSystem . bootstrap { _ in CLTLogger ( ) }
1829
1930 var logger = Logger ( label: " main " )
@@ -29,15 +40,24 @@ struct ManualTest : ParsableCommand {
2940 s. activate ( )
3041
3142 let delayedSignal = Signal . terminated
32- _ = try SigactionDelayer_Unsig . registerDelayedSigaction ( delayedSignal , handler: { _, doneHandler in
43+ let handler : DelayedSigactionHandler = { _, doneHandler in
3344 DispatchQueue . global ( ) . asyncAfter ( deadline: . now( ) + . milliseconds( 500 ) , execute: {
3445 logger. info ( " Allowing signal to be resent " )
3546 doneHandler ( true )
3647 } )
37- } )
48+ }
49+ switch mode {
50+ case . unsig: _ = try SigactionDelayer_Unsig . registerDelayedSigaction ( delayedSignal, handler: handler)
51+ case . block: _ = try SigactionDelayer_Block . registerDelayedSigaction ( delayedSignal, handler: handler)
52+ }
53+
54+
55+ sleep ( 1 )
56+ logger. info ( " Sending signal \( delayedSignal) to myself (1st time) " )
57+ kill ( getpid ( ) , delayedSignal. rawValue)
3858
3959 sleep ( 1 )
40- logger. info ( " Sending signal \( delayedSignal) to myself " )
60+ logger. info ( " Sending signal \( delayedSignal) to myself (2nd time) " )
4161 kill ( getpid ( ) , delayedSignal. rawValue)
4262
4363 sleep ( 3 )
0 commit comments