diff options
| author | Paul Buetow <pbuetow@mimecast.com> | 2020-11-27 14:47:43 +0000 |
|---|---|---|
| committer | Paul Buetow <pbuetow@mimecast.com> | 2020-11-27 14:47:43 +0000 |
| commit | 45853f487830d5f74f2de81b5348ae6463096a57 (patch) | |
| tree | 1963fa6c2614ae58a0c6134afa8cd1928c6f1516 /internal/io/signal | |
| parent | 48bbe327834f3fbb1066a0dc8587a73c0e2a2a36 (diff) | |
First Ctrl+C will print out stats, a second Ctrl+C within 3s will terminate dtail
Diffstat (limited to 'internal/io/signal')
| -rw-r--r-- | internal/io/signal/signal.go | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/internal/io/signal/signal.go b/internal/io/signal/signal.go index 9401707..06abb0b 100644 --- a/internal/io/signal/signal.go +++ b/internal/io/signal/signal.go @@ -6,31 +6,28 @@ import ( gosignal "os/signal" "syscall" "time" - - "github.com/mimecast/dtail/internal/io/logger" ) // StatsCh returns a channel for "please print stats" signalling. -func InterruptCh(ctx context.Context) <-chan struct{} { +func InterruptCh(ctx context.Context) <-chan string { sigIntCh := make(chan os.Signal) gosignal.Notify(sigIntCh, os.Interrupt) sigOtherCh := make(chan os.Signal) gosignal.Notify(sigOtherCh, syscall.SIGHUP, syscall.SIGTERM, syscall.SIGQUIT) - statsCh := make(chan struct{}) + statsCh := make(chan string) go func() { for { select { case <-sigIntCh: select { - case statsCh <- struct{}{}: - logger.Info("Hint: Hit Ctrl+C twice to exit") + case statsCh <- "Hint: Hit Ctrl+C again to exit": select { case <-sigIntCh: os.Exit(0) - case <-time.After(time.Second): + case <-time.After(time.Second * 3): } default: // Stats already printed. |
