Added signal handling

This commit is contained in:
Derek Collison
2012-12-06 12:05:34 -08:00
parent 0d9d4f6aa1
commit 98fc339cdc

View File

@@ -7,6 +7,8 @@ import (
"encoding/json"
"fmt"
"net"
"os"
"os/signal"
"sync/atomic"
"time"
@@ -91,16 +93,30 @@ func New(opts Options) *Server {
}
*/
// Generate the info json
b, err := json.Marshal(s.info)
if err != nil {
Fatalf("Err marshalling INFO JSON: %+v\n", err)
}
s.infoJson = []byte(fmt.Sprintf("INFO %s %s", b, CR_LF))
s.handleSignals()
return s
}
// Signal Handling
func (s *Server) handleSignals() {
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt)
go func(){
for sig := range c {
Debugf("Trapped Signal; %v", sig)
Log("Server Exiting..")
}
}()
}
func (s *Server) AcceptLoop() {
Logf("Starting nats-server version %s on port %d", VERSION, s.opts.Port)