From cf7a05f80f68b5b1c8bcc0089679dd497cec2506 Mon Sep 17 00:00:00 2001 From: =Corey Hulen Date: Sun, 14 Jun 2015 23:53:32 -0800 Subject: first commit --- api/server.go | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 api/server.go (limited to 'api/server.go') diff --git a/api/server.go b/api/server.go new file mode 100644 index 000000000..58986a8d4 --- /dev/null +++ b/api/server.go @@ -0,0 +1,60 @@ +// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. +// See License.txt for license information. + +package api + +import ( + l4g "code.google.com/p/log4go" + "github.com/braintree/manners" + "github.com/gorilla/mux" + "github.com/mattermost/platform/store" + "github.com/mattermost/platform/utils" + "net/http" + "time" +) + +type Server struct { + Server *manners.GracefulServer + Store store.Store + Router *mux.Router +} + +var Srv *Server + +func NewServer() { + + l4g.Info("Server is initializing...") + + Srv = &Server{} + Srv.Server = manners.NewServer() + Srv.Store = store.NewSqlStore() + store.RedisClient() + + Srv.Router = mux.NewRouter() + Srv.Router.NotFoundHandler = http.HandlerFunc(Handle404) +} + +func StartServer() { + l4g.Info("Starting Server...") + + l4g.Info("Server is listening on " + utils.Cfg.ServiceSettings.Port) + go func() { + err := Srv.Server.ListenAndServe(":"+utils.Cfg.ServiceSettings.Port, Srv.Router) + if err != nil { + l4g.Critical("Error starting server, err:%v", err) + time.Sleep(time.Second) + panic("Error starting server " + err.Error()) + } + }() +} + +func StopServer() { + + l4g.Info("Stopping Server...") + + Srv.Server.Shutdown <- true + Srv.Store.Close() + store.RedisClose() + + l4g.Info("Server stopped") +} -- cgit v1.2.3-1-g7c22