slaventius 2 years ago
parent f256615246
commit 517ef22e82
  1. 41
      cmd/main.go
  2. 21
      internal/transport/grpc/grpc.go

@ -1,9 +1,13 @@
package main package main
import ( import (
"context"
"fmt" "fmt"
"log" "log"
"net" "net"
"os"
"os/signal"
"syscall"
"test3k/authDB/internal/config" "test3k/authDB/internal/config"
server "test3k/authDB/internal/transport/grpc" server "test3k/authDB/internal/transport/grpc"
api "test3k/authDB/pkg/api" api "test3k/authDB/pkg/api"
@ -12,11 +16,40 @@ import (
) )
func main() { func main() {
s := grpc.NewServer()
srv := server.NewServer()
config := config.NewConfig() config := config.NewConfig()
ctx, _ := context.WithCancel(context.Background())
srv := server.NewServer()
s := grpc.NewServer()
// //
signalChannel := make(chan os.Signal, 1)
signal.Notify(signalChannel, syscall.SIGINT)
signal.Notify(signalChannel, syscall.SIGTERM)
defer stop(signalChannel)
// Запуск сервера
go start(config, s, srv)
//
for {
select {
case <-signalChannel:
return
case <-ctx.Done():
return
}
}
}
// Остановка сервера
func stop(signalChannel chan os.Signal) {
log.Println("authDBServer stopping ...")
signal.Stop(signalChannel)
}
// Запуск сервера
func start(config *config.Config, s *grpc.Server, srv *server.AuthDBServer) {
api.RegisterAuthDBServer(s, srv) api.RegisterAuthDBServer(s, srv)
// //
@ -27,7 +60,9 @@ func main() {
} }
// //
fmt.Printf("authDBServer up (%s)\n", connStr) log.Printf("authDBServer starting (%s)\n", connStr)
//
eru := s.Serve(lis) eru := s.Serve(lis)
if eru != nil { if eru != nil {
log.Fatal(eru) log.Fatal(eru)

@ -3,6 +3,7 @@ package grpc
import ( import (
"context" "context"
"errors" "errors"
"log"
"strconv" "strconv"
"sync" "sync"
api "test3k/authDB/pkg/api" api "test3k/authDB/pkg/api"
@ -19,22 +20,22 @@ type user struct {
Confirmed bool Confirmed bool
} }
type authDBServer struct { type AuthDBServer struct {
mu sync.Mutex mu sync.Mutex
users map[string]user users map[string]user
api.UnimplementedAuthDBServer api.UnimplementedAuthDBServer
id int32 id int32
} }
func NewServer() *authDBServer { func NewServer() *AuthDBServer {
return &authDBServer{ return &AuthDBServer{
mu: sync.Mutex{}, mu: sync.Mutex{},
users: make(map[string]user), users: make(map[string]user),
id: 0, id: 0,
} }
} }
func (s *authDBServer) Login(ctx context.Context, req *api.LoginRequest) (*api.LoginResponse, error) { func (s *AuthDBServer) Login(ctx context.Context, req *api.LoginRequest) (*api.LoginResponse, error) {
s.mu.Lock() s.mu.Lock()
defer s.mu.Unlock() defer s.mu.Unlock()
@ -65,12 +66,14 @@ func (s *authDBServer) Login(ctx context.Context, req *api.LoginRequest) (*api.L
}, nil }, nil
} }
func (s *authDBServer) Registration(ctx context.Context, req *api.RegistrationRequest) (*api.RegistrationResponse, error) { func (s *AuthDBServer) Registration(ctx context.Context, req *api.RegistrationRequest) (*api.RegistrationResponse, error) {
s.mu.Lock() s.mu.Lock()
defer s.mu.Unlock() defer s.mu.Unlock()
// //
if val, ok := s.users[req.GetLogin()]; ok { if val, ok := s.users[req.GetLogin()]; ok {
log.Printf("login %s already registered", val.Login)
return &api.RegistrationResponse{ return &api.RegistrationResponse{
Code: val.Code, Code: val.Code,
Email: val.Email, Email: val.Email,
@ -86,9 +89,9 @@ func (s *authDBServer) Registration(ctx context.Context, req *api.RegistrationRe
s.users[req.Login] = user{ s.users[req.Login] = user{
ID: s.id, ID: s.id,
Code: code, Code: code,
Login: req.Login, Login: req.GetLogin(),
Password: strconv.Itoa(unique), Password: strconv.Itoa(unique),
Email: req.Email, Email: req.GetEmail(),
Confirmed: false, Confirmed: false,
} }
@ -117,11 +120,11 @@ func (s *authDBServer) Registration(ctx context.Context, req *api.RegistrationRe
return &api.RegistrationResponse{ return &api.RegistrationResponse{
Code: code, Code: code,
Email: req.Email, Email: req.GetEmail(),
}, nil }, nil
} }
func (s *authDBServer) Confirmation(ctx context.Context, req *api.ConfirmationRequest) (*api.ConfirmationResponse, error) { func (s *AuthDBServer) Confirmation(ctx context.Context, req *api.ConfirmationRequest) (*api.ConfirmationResponse, error) {
s.mu.Lock() s.mu.Lock()
defer s.mu.Unlock() defer s.mu.Unlock()

Loading…
Cancel
Save