1
0
mirror of https://github.com/ManyakRus/crud_generator.git synced 2025-05-27 11:08:36 +02:00

сделал Start_ctx()

This commit is contained in:
Nikitin Aleksandr 2024-01-23 11:34:56 +03:00
parent 1fe4705d7b
commit 26c8aca28d
3 changed files with 90 additions and 12 deletions

View File

@ -1,6 +1,7 @@
package grpc_client
import (
"context"
"github.com/ManyakRus/starter/contextmain"
"github.com/ManyakRus/starter/log"
"github.com/ManyakRus/starter/port_checker"
@ -15,15 +16,19 @@ import (
"time"
)
// SettingsINI - тип структуры для хранения настроек подключени
type SettingsINI struct {
SYNC_SERVICE_HOST string
SYNC_SERVICE_PORT string
}
// SettingsINI - структура для хранения настроек подключени
var Settings SettingsINI
// Conn - подключение к серверу GRPC
var Conn *grpc.ClientConn
// Client - подключение к клиенту GRPC
var Client grpc_proto.SyncServiceClient
// mutexReconnect - защита от многопоточности Reconnect()
@ -32,22 +37,34 @@ var mutexReconnect = &sync.Mutex{}
// NeedReconnect - флаг необходимости переподключения
var NeedReconnect bool
// Connect - подключается к серверу GRPC, при ошибке вызывает панику
func Connect() {
var err error
err = Connect_err()
if err != nil {
log.Fatalf("GRPC Connect() error: %v", err)
} else {
addr := Settings.SYNC_SERVICE_HOST + ":" + Settings.SYNC_SERVICE_PORT
log.Info("GRPC client connected. Address: ", addr)
}
}
// Connect_err - подключается к серверу GRPC, возвращает ошибку
func Connect_err() error {
var err error
if Settings.SYNC_SERVICE_HOST == "" {
FillSettings()
}
addr := Settings.SYNC_SERVICE_HOST + ":" + Settings.SYNC_SERVICE_PORT
Conn, err = grpc.Dial(addr, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
log.Fatalf("did not connect: %v", err)
}
log.Info("GRPC client connected. Address: ", addr)
Client = grpc_proto.NewSyncServiceClient(Conn)
return err
}
func FillSettings() {
@ -81,7 +98,21 @@ func WaitStop() {
}
// Start - необходимые процедуры для запуска сервера GRPC
// если контекст хранится в contextmain.GetContext()
func Start() {
contextmain.GetContext()
ctx := contextmain.Ctx
wg := stopapp.GetWaitGroup_Main()
Start_ctx(ctx, wg)
}
// Start_ctx - необходимые процедуры для запуска сервера GRPC
// ctx - глобальный контекст приложения
// wg - глобальный WaitGroup приложения
func Start_ctx(ctx *context.Context, wg *sync.WaitGroup) {
contextmain.Ctx = ctx
stopapp.SetWaitGroup_Main(wg)
Connect()
stopapp.GetWaitGroup_Main().Add(1)
@ -92,15 +123,22 @@ func Start() {
}
// CloseConnection - закрывает подключение к GRPC, и пишет лог
func CloseConnection() {
err := Conn.Close()
err := CloseConnection_err()
if err != nil {
log.Panic("GRPC client CloseConnection() error: ", err)
log.Error("GRPC client CloseConnection() error: ", err)
} else {
log.Info("GRPC client connection closed")
}
}
// CloseConnection - закрывает подключение к GRPC, и возвращает ошибку
func CloseConnection_err() error {
err := Conn.Close()
return err
}
// IsRecordNotFound - возвращает true если ошибка = "record not found"
func IsRecordNotFound(err error) bool {
Otvet := false
@ -142,7 +180,11 @@ loop:
} else if NeedReconnect == true {
log.Warn("grpc_client CheckPort(", addr, ") OK. Start Reconnect()")
NeedReconnect = false
Connect()
err = Connect_err()
if err != nil {
NeedReconnect = true
log.Error("grpc_client Connect() error: ", err)
}
}
}
}

View File

@ -4,6 +4,7 @@
package nrpc_client
import (
"context"
"github.com/ManyakRus/starter/contextmain"
"github.com/ManyakRus/starter/log"
"github.com/ManyakRus/starter/port_checker"
@ -18,11 +19,13 @@ import (
"time"
)
// SettingsINI - тип структуры для хранения настроек подключени
type SettingsINI struct {
NATS_HOST string
NATS_PORT string
}
// SettingsINI - структура для хранения настроек подключени
var Settings SettingsINI
// Conn - подключение к NATS
@ -37,10 +40,25 @@ var mutexReconnect = &sync.Mutex{}
// NeedReconnect - флаг необходимости переподключения
var NeedReconnect bool
// Connect - подключается к NATS
// Connect - подключается к серверу NRPC, при ошибке вызывает панику
func Connect() {
var err error
err = Connect_err()
if err != nil {
log.Fatalf("NRPC Connect() error: %v", err)
} else {
NatsURL := "nats://" + Settings.NATS_HOST + ":" + Settings.NATS_PORT
log.Info("GRPC client connected. Address: ", NatsURL)
}
}
// Connect_err - подключается к серверу NRPC, возвращает ошибку
func Connect_err() error {
var err error
if Settings.NATS_HOST == "" {
FillSettings()
}
@ -56,7 +74,7 @@ func Connect() {
// This is our generated client.
Client = grpc_proto.NewSync_serviceClient(Conn)
log.Info("Client NRPC connected: ", NatsURL)
return err
}
// FillSettings - заполняет настройки из переменных окружения
@ -100,7 +118,21 @@ func WaitStop() {
}
// Start - необходимые процедуры для запуска сервера NRPC
// если контекст хранится в contextmain.GetContext()
func Start() {
contextmain.GetContext()
ctx := contextmain.Ctx
wg := stopapp.GetWaitGroup_Main()
Start_ctx(ctx, wg)
}
// Start_ctx - необходимые процедуры для запуска сервера NRPC
// ctx - глобальный контекст приложения
// wg - глобальный WaitGroup приложения
func Start_ctx(ctx *context.Context, wg *sync.WaitGroup) {
contextmain.Ctx = ctx
stopapp.SetWaitGroup_Main(wg)
Connect()
stopapp.GetWaitGroup_Main().Add(1)
@ -160,7 +192,11 @@ loop:
} else if NeedReconnect == true {
log.Warn("nrpc_client CheckPort(", addr, ") OK. Start Reconnect()")
NeedReconnect = false
Connect()
err = Connect_err()
if err != nil {
NeedReconnect = true
log.Error("nrpc_client Connect() error: ", err)
}
}
}
}

View File

@ -25,7 +25,7 @@ type ICrud_LawsuitStatusType interface {
Find_ByExtID(*LawsuitStatusType) error
}
// TableName - возвращает имя таблицы в БД, нужен для gorm
// TableName - возвращает имя таблицы в БД
func (m LawsuitStatusType) TableNameDB() string {
return "lawsuit_status_types"
}