From 2dcd08d502a88e9ad438ba7c7f74d5d52d850bcd Mon Sep 17 00:00:00 2001 From: Aaron Lindsay Date: Tue, 3 Sep 2013 22:21:18 -0400 Subject: [PATCH] Re-factor clean exiting to be usable in the client also --- asinkd/rpc_server.go | 5 +++-- asinkd/server.go | 4 +++- asinkd/exit.go => exit.go | 6 ++++-- 3 files changed, 10 insertions(+), 5 deletions(-) rename asinkd/exit.go => exit.go (94%) diff --git a/asinkd/rpc_server.go b/asinkd/rpc_server.go index 72045af..5f4069f 100644 --- a/asinkd/rpc_server.go +++ b/asinkd/rpc_server.go @@ -1,6 +1,7 @@ package main import ( + "asink" "net" "net/http" "net/rpc" @@ -68,7 +69,7 @@ func (u *UserModifier) RemoveUser(user *User, result *int) error { type ServerStopper int func (s *ServerStopper) StopServer(code *int, result *int) error { - Exit(*code) + asink.Exit(*code) *result = 0 return nil } @@ -92,5 +93,5 @@ func StartRPC(sock string, tornDown chan int, adb *AsinkDB) { go http.Serve(l, nil) - WaitOnExit() + asink.WaitOnExit() } diff --git a/asinkd/server.go b/asinkd/server.go index 438f199..4c731bf 100644 --- a/asinkd/server.go +++ b/asinkd/server.go @@ -29,6 +29,8 @@ func init() { if err != nil { panic(err) } + + asink.SetupCleanExitOnSignals() } const sock_usage = "Socket to use to connect to the Asink server." @@ -60,7 +62,7 @@ func StartServer(args []string) { go http.Serve(l, nil) //TODO handle errors from http.Serve? - WaitOnExit() + asink.WaitOnExit() <-rpcTornDown } diff --git a/asinkd/exit.go b/exit.go similarity index 94% rename from asinkd/exit.go rename to exit.go index f822f09..c25a4be 100644 --- a/asinkd/exit.go +++ b/exit.go @@ -1,4 +1,4 @@ -package main +package asink import ( "os" @@ -14,9 +14,11 @@ func init() { exitWaiterCount = 0 exitWaiterChan = make(chan int) exitCalled = make(chan int) - go setupCleanExitOnSignals() } +func SetupCleanExitOnSignals() { + go setupCleanExitOnSignals() +} func setupCleanExitOnSignals() { //wait to properly close the socket when we're exiting exitCode := 0