Function
waitSignals
(errs chan error, cancel context.CancelFunc, gracefulCancel context.CancelFunc)
Source from the content-addressed store, hash-verified
| 117 | } |
| 118 | |
| 119 | func waitSignals(errs chan error, cancel context.CancelFunc, gracefulCancel context.CancelFunc) error { |
| 120 | sigChan := make(chan os.Signal, 1) |
| 121 | signal.Notify( |
| 122 | sigChan, |
| 123 | syscall.SIGINT, |
| 124 | syscall.SIGTERM, |
| 125 | ) |
| 126 | |
| 127 | select { |
| 128 | case err := <-errs: |
| 129 | return err |
| 130 | |
| 131 | case s := <-sigChan: |
| 132 | switch s { |
| 133 | case syscall.SIGINT: |
| 134 | gracefulCancel() |
| 135 | fmt.Println("C-C to force close") |
| 136 | select { |
| 137 | case err := <-errs: |
| 138 | return err |
| 139 | case <-sigChan: |
| 140 | fmt.Println("Force closing...") |
| 141 | cancel() |
| 142 | return <-errs |
| 143 | } |
| 144 | default: |
| 145 | cancel() |
| 146 | return <-errs |
| 147 | } |
| 148 | } |
| 149 | } |
Tested by
no test coverage detected