summaryrefslogtreecommitdiff
path: root/internal/io/signal
diff options
context:
space:
mode:
authorPaul Buetow <pbuetow@mimecast.com>2020-11-27 14:47:43 +0000
committerPaul Buetow <pbuetow@mimecast.com>2020-11-27 14:47:43 +0000
commit45853f487830d5f74f2de81b5348ae6463096a57 (patch)
tree1963fa6c2614ae58a0c6134afa8cd1928c6f1516 /internal/io/signal
parent48bbe327834f3fbb1066a0dc8587a73c0e2a2a36 (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.go11
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.