1
0
mirror of https://github.com/ManyakRus/crud_generator.git synced 2025-05-30 11:27:35 +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 package grpc_client
import ( import (
"context"
"github.com/ManyakRus/starter/contextmain" "github.com/ManyakRus/starter/contextmain"
"github.com/ManyakRus/starter/log" "github.com/ManyakRus/starter/log"
"github.com/ManyakRus/starter/port_checker" "github.com/ManyakRus/starter/port_checker"
@ -15,15 +16,19 @@ import (
"time" "time"
) )
// SettingsINI - тип структуры для хранения настроек подключени
type SettingsINI struct { type SettingsINI struct {
SYNC_SERVICE_HOST string SYNC_SERVICE_HOST string
SYNC_SERVICE_PORT string SYNC_SERVICE_PORT string
} }
// SettingsINI - структура для хранения настроек подключени
var Settings SettingsINI var Settings SettingsINI
// Conn - подключение к серверу GRPC
var Conn *grpc.ClientConn var Conn *grpc.ClientConn
// Client - подключение к клиенту GRPC
var Client grpc_proto.SyncServiceClient var Client grpc_proto.SyncServiceClient
// mutexReconnect - защита от многопоточности Reconnect() // mutexReconnect - защита от многопоточности Reconnect()
@ -32,22 +37,34 @@ var mutexReconnect = &sync.Mutex{}
// NeedReconnect - флаг необходимости переподключения // NeedReconnect - флаг необходимости переподключения
var NeedReconnect bool var NeedReconnect bool
// Connect - подключается к серверу GRPC, при ошибке вызывает панику
func Connect() { func Connect() {
var err error 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 == "" { if Settings.SYNC_SERVICE_HOST == "" {
FillSettings() FillSettings()
} }
addr := Settings.SYNC_SERVICE_HOST + ":" + Settings.SYNC_SERVICE_PORT addr := Settings.SYNC_SERVICE_HOST + ":" + Settings.SYNC_SERVICE_PORT
Conn, err = grpc.Dial(addr, grpc.WithTransportCredentials(insecure.NewCredentials())) 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) Client = grpc_proto.NewSyncServiceClient(Conn)
return err
} }
func FillSettings() { func FillSettings() {
@ -81,7 +98,21 @@ func WaitStop() {
} }
// Start - необходимые процедуры для запуска сервера GRPC // Start - необходимые процедуры для запуска сервера GRPC
// если контекст хранится в contextmain.GetContext()
func Start() { 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() Connect()
stopapp.GetWaitGroup_Main().Add(1) stopapp.GetWaitGroup_Main().Add(1)
@ -92,15 +123,22 @@ func Start() {
} }
// CloseConnection - закрывает подключение к GRPC, и пишет лог
func CloseConnection() { func CloseConnection() {
err := Conn.Close() err := CloseConnection_err()
if err != nil { if err != nil {
log.Panic("GRPC client CloseConnection() error: ", err) log.Error("GRPC client CloseConnection() error: ", err)
} else { } else {
log.Info("GRPC client connection closed") log.Info("GRPC client connection closed")
} }
} }
// CloseConnection - закрывает подключение к GRPC, и возвращает ошибку
func CloseConnection_err() error {
err := Conn.Close()
return err
}
// IsRecordNotFound - возвращает true если ошибка = "record not found" // IsRecordNotFound - возвращает true если ошибка = "record not found"
func IsRecordNotFound(err error) bool { func IsRecordNotFound(err error) bool {
Otvet := false Otvet := false
@ -142,7 +180,11 @@ loop:
} else if NeedReconnect == true { } else if NeedReconnect == true {
log.Warn("grpc_client CheckPort(", addr, ") OK. Start Reconnect()") log.Warn("grpc_client CheckPort(", addr, ") OK. Start Reconnect()")
NeedReconnect = false 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 package nrpc_client
import ( import (
"context"
"github.com/ManyakRus/starter/contextmain" "github.com/ManyakRus/starter/contextmain"
"github.com/ManyakRus/starter/log" "github.com/ManyakRus/starter/log"
"github.com/ManyakRus/starter/port_checker" "github.com/ManyakRus/starter/port_checker"
@ -18,11 +19,13 @@ import (
"time" "time"
) )
// SettingsINI - тип структуры для хранения настроек подключени
type SettingsINI struct { type SettingsINI struct {
NATS_HOST string NATS_HOST string
NATS_PORT string NATS_PORT string
} }
// SettingsINI - структура для хранения настроек подключени
var Settings SettingsINI var Settings SettingsINI
// Conn - подключение к NATS // Conn - подключение к NATS
@ -37,10 +40,25 @@ var mutexReconnect = &sync.Mutex{}
// NeedReconnect - флаг необходимости переподключения // NeedReconnect - флаг необходимости переподключения
var NeedReconnect bool var NeedReconnect bool
// Connect - подключается к NATS // Connect - подключается к серверу NRPC, при ошибке вызывает панику
func Connect() { func Connect() {
var err error 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 == "" { if Settings.NATS_HOST == "" {
FillSettings() FillSettings()
} }
@ -56,7 +74,7 @@ func Connect() {
// This is our generated client. // This is our generated client.
Client = grpc_proto.NewSync_serviceClient(Conn) Client = grpc_proto.NewSync_serviceClient(Conn)
log.Info("Client NRPC connected: ", NatsURL) return err
} }
// FillSettings - заполняет настройки из переменных окружения // FillSettings - заполняет настройки из переменных окружения
@ -100,7 +118,21 @@ func WaitStop() {
} }
// Start - необходимые процедуры для запуска сервера NRPC // Start - необходимые процедуры для запуска сервера NRPC
// если контекст хранится в contextmain.GetContext()
func Start() { 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() Connect()
stopapp.GetWaitGroup_Main().Add(1) stopapp.GetWaitGroup_Main().Add(1)
@ -160,7 +192,11 @@ loop:
} else if NeedReconnect == true { } else if NeedReconnect == true {
log.Warn("nrpc_client CheckPort(", addr, ") OK. Start Reconnect()") log.Warn("nrpc_client CheckPort(", addr, ") OK. Start Reconnect()")
NeedReconnect = false 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 Find_ByExtID(*LawsuitStatusType) error
} }
// TableName - возвращает имя таблицы в БД, нужен для gorm // TableName - возвращает имя таблицы в БД
func (m LawsuitStatusType) TableNameDB() string { func (m LawsuitStatusType) TableNameDB() string {
return "lawsuit_status_types" return "lawsuit_status_types"
} }