diff options
author | Jacob Vosmaer (GitLab) <jacob@gitlab.com> | 2018-04-23 18:00:24 +0300 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2018-04-23 18:00:24 +0300 |
commit | fd06fc02844a15bfaa78502f6b7c36588f66cd42 (patch) | |
tree | 65bf11c76d4ab6b09f7cbf9dee088e980bcec7c9 /helpers.go | |
parent | c2fb2a8f8aa79e390b920f7b7c061e2951e69566 (diff) |
Add gRPC admin health check
Diffstat (limited to 'helpers.go')
-rw-r--r-- | helpers.go | 33 |
1 files changed, 29 insertions, 4 deletions
@@ -3,6 +3,7 @@ package main import ( "io/ioutil" "net" + "os" ) func readFile(file string) (result []byte) { @@ -13,17 +14,41 @@ func readFile(file string) (result []byte) { return } -func createSocket(addr string) (l net.Listener, fd uintptr) { +// Be careful: if you let either of the return values get garbage +// collected by Go they will be closed automatically. +func createSocket(addr string) (net.Listener, *os.File) { l, err := net.Listen("tcp", addr) if err != nil { fatal(err) } - f, err := l.(*net.TCPListener).File() + return l, fileForListener(l) +} + +// Be careful: if you let either of the return values get garbage +// collected by Go they will be closed automatically. +func createUnixSocket(addr string) (net.Listener, *os.File) { + if err := os.Remove(addr); err != nil && !os.IsNotExist(err) { + fatal(err) + } + + l, err := net.Listen("unix", addr) if err != nil { fatal(err) } - fd = f.Fd() - return + return l, fileForListener(l) +} + +func fileForListener(l net.Listener) *os.File { + type filer interface { + File() (*os.File, error) + } + + f, err := l.(filer).File() + if err != nil { + fatal(err) + } + + return f } |