summaryrefslogtreecommitdiffstats
path: root/api/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/server.go')
-rw-r--r--api/server.go60
1 files changed, 60 insertions, 0 deletions
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")
+}