blob: 12c2905825acd316aa346eac4ec7e0f39413baa1 [file] [log] [blame]
iomodoc6abf5b2021-02-19 14:48:03 +04001package server
2
3import (
4 "net"
5 "os"
6
7 "github.com/giolekva/pcloud/core/kg/log"
8 "github.com/giolekva/pcloud/core/kg/store"
9 "google.golang.org/grpc"
10)
11
12const listenerPort = ":9081"
13
14// Server type defines application global state
15type Server struct {
16 Log *log.Logger
17 srv *grpc.Server
18 store store.Store
19}
20
21// NewServer creates new Server
22func NewServer(logger *log.Logger) (*Server, error) {
23 a := &Server{
24 Log: logger,
25 }
26
27 pwd, _ := os.Getwd()
iomodod32f9ee2021-02-21 21:28:50 +040028 a.Log.Info("Current working", log.String("directory", pwd))
iomodoc6abf5b2021-02-19 14:48:03 +040029 return a, nil
30}
31
32// Start method starts an app
33func (a *Server) Start() error {
34 // settings := model.NewConfig().SqlSettings
35 // a.store = sqlstore.New(settings)
36
37 lis, err := net.Listen("tcp", listenerPort)
38 if err != nil {
39 a.Log.Error("failed to listen: %v", log.Err(err))
40 return err
41 }
42
43 a.srv = grpc.NewServer()
44
45 a.Log.Info("Server is listening on", log.String("port", listenerPort))
46 if err := a.srv.Serve(lis); err != nil {
47 a.Log.Error("failed to serve: %v", log.Err(err))
48 return err
49 }
50 a.Log.Info("Server stopped")
51 return nil
52}
53
54// Shutdown method shuts server down
55func (a *Server) Shutdown() {
iomodod32f9ee2021-02-21 21:28:50 +040056 a.Log.Info("Stopping Server...")
iomodoc6abf5b2021-02-19 14:48:03 +040057 a.srv.GracefulStop()
58}