blob: c36c7d2f268d0abe3570069dbc5d5012dc2cb4e4 [file] [log] [blame]
iomododb170e12021-02-21 23:06:20 +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// GRPCServerImpl grpc server implementation
15type GRPCServerImpl struct {
16 Log *log.Logger
17 srv *grpc.Server
18 store store.Store
19}
20
21var _ Server = &GRPCServerImpl{}
22
23// NewGRPCServer creates new GRPC Server
24func NewGRPCServer(logger *log.Logger) Server {
25 a := &GRPCServerImpl{
26 Log: logger,
27 }
28
29 pwd, _ := os.Getwd()
30 a.Log.Info("GRPC server current working", log.String("directory", pwd))
31 return a
32}
33
34// Start method starts an app
35func (a *GRPCServerImpl) Start() error {
36 a.Log.Info("Starting GRPC Server...")
37
38 // settings := model.NewConfig().SqlSettings
39 // a.store = sqlstore.New(settings)
40
41 lis, err := net.Listen("tcp", listenerPort)
42 if err != nil {
43 a.Log.Error("failed to listen: %v", log.Err(err))
44 return err
45 }
46
47 a.srv = grpc.NewServer()
48
49 a.Log.Info("GRPC Server is listening on", log.String("port", listenerPort))
50 if err := a.srv.Serve(lis); err != nil {
51 a.Log.Error("failed to serve: %v", log.Err(err))
52 return err
53 }
54 return nil
55}
56
57// Shutdown method shuts server down
58func (a *GRPCServerImpl) Shutdown() error {
59 a.Log.Info("Stopping GRPC Server...")
60 a.srv.GracefulStop()
61 return nil
62}