diff --git a/bin/templates/pkg/network/grpc/grpc_client/grpc_client.go_ b/bin/templates/pkg/network/grpc/grpc_client/grpc_client.go_ index 59753b7..a4f28eb 100644 --- a/bin/templates/pkg/network/grpc/grpc_client/grpc_client.go_ +++ b/bin/templates/pkg/network/grpc/grpc_client/grpc_client.go_ @@ -2,6 +2,7 @@ package grpc_client import ( "context" + "errors" "github.com/ManyakRus/starter/contextmain" "github.com/ManyakRus/starter/log" "github.com/ManyakRus/starter/port_checker" @@ -31,8 +32,8 @@ var Conn *grpc.ClientConn // Client - подключение к клиенту GRPC var Client grpc_proto.SyncServiceClient -// mutexReconnect - защита от многопоточности Reconnect() -var mutexReconnect = &sync.Mutex{} +// mutex_Connect - защита от многопоточности Reconnect() +var mutex_Connect = &sync.Mutex{} // NeedReconnect - флаг необходимости переподключения var NeedReconnect bool @@ -56,8 +57,16 @@ func Connect() { func Connect_err() error { var err error + // + mutex_Connect.Lock() + defer mutex_Connect.Unlock() + + // if Settings.SYNC_SERVICE_HOST == "" { - FillSettings() + err = FillSettings() + if err != nil { + return err + } } addr := Settings.SYNC_SERVICE_HOST + ":" + Settings.SYNC_SERVICE_PORT @@ -67,18 +76,26 @@ func Connect_err() error { return err } -func FillSettings() { +func FillSettings() error { + var err error + Settings = SettingsINI{} Settings.SYNC_SERVICE_HOST = os.Getenv("SYNC_SERVICE_HOST") Settings.SYNC_SERVICE_PORT = os.Getenv("SYNC_SERVICE_PORT") if Settings.SYNC_SERVICE_HOST == "" { - log.Panic("Need fill SYNC_SERVICE_HOST ! in OS Environment ") + TextError := "Need fill SYNC_SERVICE_HOST ! in OS Environment " + err = errors.New(TextError) + return err } if Settings.SYNC_SERVICE_PORT == "" { - log.Panic("Need fill SYNC_SERVICE_PORT ! in OS Environment ") + TextError := "Need fill SYNC_SERVICE_PORT ! in OS Environment " + err = errors.New(TextError) + return err } + + return err } // WaitStop - ожидает отмену глобального контекста @@ -99,20 +116,9 @@ func WaitStop() { // Start - необходимые процедуры для запуска сервера GRPC // если контекст хранится в contextmain.GetContext() +// и есть stopapp.GetWaitGroup_Main() +// при ошибке вызывает панику 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) @@ -123,6 +129,28 @@ func Start_ctx(ctx *context.Context, wg *sync.WaitGroup) { } +// Start_ctx - необходимые процедуры для запуска сервера GRPC +// ctx - глобальный контекст приложения +// wg - глобальный WaitGroup приложения +func Start_ctx(ctx *context.Context, wg *sync.WaitGroup) error { + var err error + contextmain.Ctx = ctx + stopapp.SetWaitGroup_Main(wg) + + err = Connect_err() + if err != nil { + return err + } + + stopapp.GetWaitGroup_Main().Add(1) + go WaitStop() + + stopapp.GetWaitGroup_Main().Add(1) + go ping_go() + + return err +} + // CloseConnection - закрывает подключение к GRPC, и пишет лог func CloseConnection() { err := CloseConnection_err() diff --git a/bin/templates/pkg/network/nrpc/nrpc_client/nrpc_client.go_ b/bin/templates/pkg/network/nrpc/nrpc_client/nrpc_client.go_ index a573e3a..a5e168e 100644 --- a/bin/templates/pkg/network/nrpc/nrpc_client/nrpc_client.go_ +++ b/bin/templates/pkg/network/nrpc/nrpc_client/nrpc_client.go_ @@ -1,10 +1,14 @@ //Файл создан автоматически кодогенератором crud_generator //Не изменяйте ничего здесь. +//Файл создан автоматически кодогенератором crud_generator +//Не изменяйте ничего здесь. + package nrpc_client import ( "context" + "errors" "github.com/ManyakRus/starter/contextmain" "github.com/ManyakRus/starter/log" "github.com/ManyakRus/starter/port_checker" @@ -34,8 +38,8 @@ var Conn *nats.Conn // Client - подключение к клиенту NRPC var Client *grpc_proto.Sync_serviceClient -// mutexReconnect - защита от многопоточности Reconnect() -var mutexReconnect = &sync.Mutex{} +// mutex_Connect - защита от многопоточности Reconnect() +var mutex_Connect = &sync.Mutex{} // NeedReconnect - флаг необходимости переподключения var NeedReconnect bool @@ -59,6 +63,10 @@ func Connect() { func Connect_err() error { var err error + // + mutex_Connect.Lock() + defer mutex_Connect.Unlock() + if Settings.NATS_HOST == "" { FillSettings() } @@ -78,7 +86,9 @@ func Connect_err() error { } // FillSettings - заполняет настройки из переменных окружения -func FillSettings() { +func FillSettings() error { + var err error + Settings = SettingsINI{} Settings.NATS_HOST = os.Getenv("NATS_HOST") Settings.NATS_PORT = os.Getenv("NATS_PORT") @@ -93,12 +103,18 @@ func FillSettings() { } if Settings.NATS_HOST == "" { - log.Panic("Need fill BUS_LOCAL_HOST ! in OS Environment ") + TextError := "Need fill BUS_LOCAL_HOST ! in OS Environment " + err = errors.New(TextError) + return err } if Settings.NATS_PORT == "" { - log.Panic("Need fill BUS_LOCAL_PORT ! in OS Environment ") + TextError := "Need fill BUS_LOCAL_PORT ! in OS Environment " + err = errors.New(TextError) + return err } + + return err } // WaitStop - ожидает отмену глобального контекста @@ -119,20 +135,9 @@ func WaitStop() { // Start - необходимые процедуры для запуска сервера NRPC // если контекст хранится в contextmain.GetContext() +// и есть stopapp.GetWaitGroup_Main() +// при ошибке вызывает панику 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) @@ -143,6 +148,28 @@ func Start_ctx(ctx *context.Context, wg *sync.WaitGroup) { } +// Start_ctx - необходимые процедуры для запуска сервера NRPC +// ctx - глобальный контекст приложения +// wg - глобальный WaitGroup приложения +func Start_ctx(ctx *context.Context, wg *sync.WaitGroup) error { + var err error + contextmain.Ctx = ctx + stopapp.SetWaitGroup_Main(wg) + + err = Connect_err() + if err != nil { + return err + } + + stopapp.GetWaitGroup_Main().Add(1) + go WaitStop() + + stopapp.GetWaitGroup_Main().Add(1) + go ping_go() + + return err +} + // CloseConnection - закрывает подключение к NATS func CloseConnection() { Conn.Close()