mirror of
https://github.com/pikami/cosmium.git
synced 2025-03-12 21:05:29 +00:00
Return error code if server fails to start
This commit is contained in:
parent
da1566875b
commit
887d456ad4
@ -5,6 +5,7 @@ import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/pikami/cosmium/api/handlers"
|
||||
@ -86,7 +87,7 @@ func (s *ApiServer) CreateRouter(repository *repositories.DataRepository) {
|
||||
s.router = router
|
||||
}
|
||||
|
||||
func (s *ApiServer) Start() {
|
||||
func (s *ApiServer) Start() error {
|
||||
listenAddress := fmt.Sprintf(":%d", s.config.Port)
|
||||
s.isActive = true
|
||||
|
||||
@ -95,6 +96,8 @@ func (s *ApiServer) Start() {
|
||||
Handler: s.router.Handler(),
|
||||
}
|
||||
|
||||
errChan := make(chan error, 1)
|
||||
|
||||
go func() {
|
||||
<-s.stopServer
|
||||
logger.InfoLn("Shutting down server...")
|
||||
@ -106,32 +109,36 @@ func (s *ApiServer) Start() {
|
||||
}()
|
||||
|
||||
go func() {
|
||||
var err error
|
||||
if s.config.DisableTls {
|
||||
logger.Infof("Listening and serving HTTP on %s\n", server.Addr)
|
||||
err := server.ListenAndServe()
|
||||
if err != nil && err != http.ErrServerClosed {
|
||||
logger.ErrorLn("Failed to start HTTP server:", err)
|
||||
}
|
||||
s.isActive = false
|
||||
err = server.ListenAndServe()
|
||||
} else if s.config.TLS_CertificatePath != "" && s.config.TLS_CertificateKey != "" {
|
||||
logger.Infof("Listening and serving HTTPS on %s\n", server.Addr)
|
||||
err := server.ListenAndServeTLS(
|
||||
err = server.ListenAndServeTLS(
|
||||
s.config.TLS_CertificatePath,
|
||||
s.config.TLS_CertificateKey)
|
||||
if err != nil && err != http.ErrServerClosed {
|
||||
logger.ErrorLn("Failed to start HTTPS server:", err)
|
||||
}
|
||||
s.isActive = false
|
||||
} else {
|
||||
tlsConfig := tlsprovider.GetDefaultTlsConfig()
|
||||
server.TLSConfig = tlsConfig
|
||||
|
||||
logger.Infof("Listening and serving HTTPS on %s\n", server.Addr)
|
||||
err := server.ListenAndServeTLS("", "")
|
||||
if err != nil && err != http.ErrServerClosed {
|
||||
logger.ErrorLn("Failed to start HTTPS server:", err)
|
||||
}
|
||||
s.isActive = false
|
||||
err = server.ListenAndServeTLS("", "")
|
||||
}
|
||||
|
||||
if err != nil && err != http.ErrServerClosed {
|
||||
logger.ErrorLn("Failed to start server:", err)
|
||||
errChan <- err
|
||||
} else {
|
||||
errChan <- nil
|
||||
}
|
||||
s.isActive = false
|
||||
}()
|
||||
|
||||
select {
|
||||
case err := <-errChan:
|
||||
return err
|
||||
case <-time.After(50 * time.Millisecond):
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
@ -19,7 +19,10 @@ func main() {
|
||||
})
|
||||
|
||||
server := api.NewApiServer(repository, configuration)
|
||||
server.Start()
|
||||
err := server.Start()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
waitForExit(server, repository, configuration)
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ const (
|
||||
ResponseFailedToParseRequest = 103
|
||||
ResponseServerInstanceAlreadyExists = 104
|
||||
ResponseServerInstanceNotFound = 105
|
||||
ResponseFailedToStartServer = 106
|
||||
|
||||
ResponseRepositoryNotFound = 200
|
||||
ResponseRepositoryConflict = 201
|
||||
|
@ -37,7 +37,10 @@ func CreateServerInstance(serverName *C.char, configurationJSON *C.char) int {
|
||||
})
|
||||
|
||||
server := api.NewApiServer(repository, configuration)
|
||||
server.Start()
|
||||
err = server.Start()
|
||||
if err != nil {
|
||||
return ResponseFailedToStartServer
|
||||
}
|
||||
|
||||
addInstance(serverNameStr, &ServerInstance{
|
||||
server: server,
|
||||
|
Loading…
x
Reference in New Issue
Block a user