package main
import (
"context"
"log"
"net"
"os"
"os/signal"
"strconv"
"syscall"
server "git.slaventius.ru/test3k/authDB/internal"
"git.slaventius.ru/test3k/authDB/internal/config"
api "git.slaventius.ru/test3k/umate/pkg/api"
"google.golang.org/grpc"
)
func main ( ) {
config := config . NewConfig ( )
ctx , ctxCancel := context . WithCancel ( context . Background ( ) )
srv := server . NewServer ( ctx , config )
s := grpc . NewServer ( )
//
signalChannel := make ( chan os . Signal , 1 )
signal . Notify ( signalChannel , syscall . SIGINT )
signal . Notify ( signalChannel , syscall . SIGTERM )
defer stop ( signalChannel , s , srv , ctxCancel )
// Запуск сервера
go start ( config , s , srv , ctxCancel )
//
for {
select {
case <- signalChannel :
return
case <- ctx . Done ( ) :
return
}
}
}
// Остановка сервера
func stop ( signalChannel chan os . Signal , s * grpc . Server , srv * server . AuthDBServer , cancel context . CancelFunc ) {
defer s . GracefulStop ( )
defer srv . GracefulStop ( )
defer signal . Stop ( signalChannel )
defer cancel ( )
log . Println ( "authDBServer stopping ..." )
}
// Запуск сервера
func start ( config * config . Config , s * grpc . Server , srv * server . AuthDBServer , cancel context . CancelFunc ) {
defer cancel ( )
//
api . RegisterAuthDBServer ( s , srv )
// health.RegisterHealthServer(s, srv)
//
connStr := net . JoinHostPort ( "" , strconv . Itoa ( config . App . Port ) )
kafkaStr := net . JoinHostPort ( config . Kafka . Host , strconv . Itoa ( config . Kafka . Port ) )
//
lis , era := net . Listen ( "tcp" , connStr )
if era != nil {
log . Fatal ( era )
}
//
log . Printf ( "authDBServer starting on %s\n" , connStr )
log . Printf ( "authDBServer listening on %s\n" , kafkaStr )
//
eru := s . Serve ( lis )
if eru != nil {
log . Fatal ( "Failed starting server" )
}
}