From 45853f487830d5f74f2de81b5348ae6463096a57 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 27 Nov 2020 14:47:43 +0000 Subject: First Ctrl+C will print out stats, a second Ctrl+C within 3s will terminate dtail --- internal/io/signal/signal.go | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'internal/io') 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. -- cgit v1.2.3