From 2d4702781bd3fb6d45bdd31f01ea413840f7df58 Mon Sep 17 00:00:00 2001 From: Gregory Eremin Date: Sat, 29 Aug 2015 14:14:53 +0300 Subject: [PATCH] Handle SIGHUP and reload config --- confection.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/confection.go b/confection.go index d7cdf71..feff6c9 100644 --- a/confection.go +++ b/confection.go @@ -4,7 +4,10 @@ import ( "encoding/json" "flag" "log" + "os" + "os/signal" "reflect" + "syscall" ) var ( @@ -30,6 +33,19 @@ func Manage(target interface{}) { bootstrap() } +// HandleSIGHUP waits a SIGHUP system call and reloads configuration when +// receives one. +func HandleSIGHUP() { + ch := make(chan os.Signal, 1) + signal.Notify(ch, syscall.SIGHUP) + go func() { + for _ = range ch { + log.Println("SIGHUP received, reloading config") + readConfig() + } + }() +} + // OnChange adds a callback function that is triggered every time a value of // a field changes. func OnChange(field string, fun func(oldVal, newVal interface{})) {