Просмотр исходного кода

SVI Добавление функций, нейминг; 100.0%

SVI 1 год назад
Родитель
Сommit
a0cde0d1e6

+ 3 - 3
cmd/demo/main.go

@@ -11,13 +11,13 @@ var app IKernelMonolit
 func main() {
 	app = kern.GetMonolitLocal("Demo monolit")
 
-	modServHttp := kern.NewModuleServHttp()
+	modServHttp := kern.GetModuleServHttp()
 	app.Add(modServHttp)
 
-	modKernelCtx := kern.NewModuleKernelCtx()
+	modKernelCtx := kern.GetModuleKernelCtx()
 	app.Add(modKernelCtx)
 
-	modKernKeep := kern.NewModuleKernelKeeper()
+	modKernKeep := kern.GetModuleKernelKeeper()
 	app.Add(modKernKeep)
 
 	app.Run()

+ 9 - 9
kern.go

@@ -113,21 +113,21 @@ func NewClientBusHttp(url string) IBusClient {
 	return client
 }
 
-// NewModuleServHttp -- возвращает новый модуль для IKernelServHttp
-func NewModuleServHttp() IKernelModule {
-	modServHttp := mod_serv_http.NewModuleServHttp()
+// GetModuleServHttp -- возвращает модуль для IKernelServHttp
+func GetModuleServHttp() IKernelModule {
+	modServHttp := mod_serv_http.GetModuleServHttp()
 	return modServHttp
 }
 
-// NewModuleKernelCtx -- возвращает новый модуль для IKernelCtx
-func NewModuleKernelCtx() IKernelModule {
-	modKernelCtx := mod_kctx.NewModuleKernelCtx()
+// GetModuleKernelCtx -- возвращает модуль для IKernelCtx
+func GetModuleKernelCtx() IKernelModule {
+	modKernelCtx := mod_kctx.GetModuleKernelCtx()
 	return modKernelCtx
 }
 
-// NewModuleKernelKeeper -- возвращает новый модуль для IKernelKeeper
-func NewModuleKernelKeeper() IKernelModule {
-	modKernelKeeper := mod_keeper.NewModuleKeeper()
+// GetModuleKernelKeeper -- возвращает модуль для IKernelKeeper
+func GetModuleKernelKeeper() IKernelModule {
+	modKernelKeeper := mod_keeper.GetModuleKeeper()
 	return modKernelKeeper
 }
 

+ 3 - 3
kern_test.go

@@ -93,16 +93,16 @@ func (sf *tester) new() {
 		sf.t.Fatalf("new(): (http) IBusClient==nil")
 	}
 
-	modServHttp := NewModuleServHttp()
+	modServHttp := GetModuleServHttp()
 	if modServHttp == nil {
 		sf.t.Fatalf("new(): modServHttp==nil")
 	}
 
-	modKernelCtx := NewModuleKernelCtx()
+	modKernelCtx := GetModuleKernelCtx()
 	if modKernelCtx == nil {
 		sf.t.Fatalf("new(): modKernelCtx==nil")
 	}
-	modKernelKeeper := NewModuleKernelKeeper()
+	modKernelKeeper := GetModuleKernelKeeper()
 	if modKernelKeeper == nil {
 		sf.t.Fatalf("new(): modKernelKeeper==nil")
 	}

+ 15 - 2
mds/mod_kctx/mod_kctx.go

@@ -2,6 +2,8 @@
 package mod_kctx
 
 import (
+	"sync"
+
 	"gitp78su.ipnodns.ru/svi/kern/krn/kctx"
 	"gitp78su.ipnodns.ru/svi/kern/krn/kmodule"
 	"gitp78su.ipnodns.ru/svi/kern/krn/kserv_http"
@@ -20,8 +22,18 @@ type ModuleKernelCtx struct {
 	log       ILogBuf
 }
 
-// NewModuleKernelCtx -- возвращает новый модуль контекста ядра
-func NewModuleKernelCtx() *ModuleKernelCtx {
+var (
+	mod   *ModuleKernelCtx
+	block sync.Mutex
+)
+
+// GetModuleKernelCtx -- возвращает новый модуль контекста ядра
+func GetModuleKernelCtx() *ModuleKernelCtx {
+	block.Lock()
+	defer block.Unlock()
+	if mod != nil {
+		return mod
+	}
 	sf := &ModuleKernelCtx{
 		kCtx:          kctx.GetKernelCtx(),
 		IKernelModule: kmodule.NewKernelModule("kCtx"),
@@ -33,6 +45,7 @@ func NewModuleKernelCtx() *ModuleKernelCtx {
 	_ = page_module.GetPageModule()
 
 	_ = http_api.NewHttpApi()
+	mod = sf
 	return sf
 }
 

+ 3 - 2
mds/mod_kctx/mod_kctx_test.go

@@ -48,7 +48,8 @@ func (sf *tester) newGood1() {
 	_ = mock_env.MakeEnv()
 	_ = os.Unsetenv("LOCAL_HTTP_URL")
 	os.Setenv("LOCAL_HTTP_URL", "http://localhost:18328/")
-	sf.mod = NewModuleKernelCtx()
+	sf.mod = GetModuleKernelCtx()
+	_ = GetModuleKernelCtx()
 	if sf.mod == nil {
 		sf.t.Fatalf("newGood1(): mod==nil")
 	}
@@ -70,5 +71,5 @@ func (sf *tester) newBad1() {
 			sf.t.Fatalf("newBad1(): panic==nil")
 		}
 	}()
-	_ = NewModuleKernelCtx()
+	_ = GetModuleKernelCtx()
 }

+ 15 - 2
mds/mod_keeper/mod_keeper.go

@@ -2,6 +2,8 @@
 package mod_keeper
 
 import (
+	"sync"
+
 	"gitp78su.ipnodns.ru/svi/kern/krn/kctx"
 	"gitp78su.ipnodns.ru/svi/kern/krn/kmodule"
 	"gitp78su.ipnodns.ru/svi/kern/krn/kserv_http"
@@ -20,8 +22,18 @@ type ModuleKeeper struct {
 	log       ILogBuf
 }
 
-// NewModuleKeeper -- возвращает новый модуль сторожа ядра
-func NewModuleKeeper() *ModuleKeeper {
+var (
+	mod   *ModuleKeeper
+	block sync.Mutex
+)
+
+// GetModuleKeeper -- возвращает новый модуль сторожа ядра
+func GetModuleKeeper() *ModuleKeeper {
+	block.Lock()
+	defer block.Unlock()
+	if mod != nil {
+		return nil
+	}
 	sf := &ModuleKeeper{
 		kCtx:          kctx.GetKernelCtx(),
 		IKernelModule: kmodule.NewKernelModule("kKeeper"),
@@ -33,6 +45,7 @@ func NewModuleKeeper() *ModuleKeeper {
 	_ = page_module.GetPageModule()
 
 	_ = http_api.NewHttpApi()
+	mod = sf
 	return sf
 }
 

+ 3 - 2
mds/mod_keeper/mod_keeper_test.go

@@ -48,7 +48,8 @@ func (sf *tester) newGood1() {
 	_ = mock_env.MakeEnv()
 	_ = os.Unsetenv("LOCAL_HTTP_URL")
 	os.Setenv("LOCAL_HTTP_URL", "http://localhost:18320/")
-	sf.mod = NewModuleKeeper()
+	sf.mod = GetModuleKeeper()
+	_ = GetModuleKeeper()
 	if sf.mod == nil {
 		sf.t.Fatalf("newGood1(): mod==nil")
 	}
@@ -70,5 +71,5 @@ func (sf *tester) newBad1() {
 			sf.t.Fatalf("newBad1(): panic==nil")
 		}
 	}()
-	_ = NewModuleKeeper()
+	_ = GetModuleKeeper()
 }

+ 15 - 2
mds/mod_serv_http/mod_serv_http.go

@@ -2,6 +2,8 @@
 package mod_serv_http
 
 import (
+	"sync"
+
 	"gitp78su.ipnodns.ru/svi/kern/krn/kmodule"
 	"gitp78su.ipnodns.ru/svi/kern/krn/kserv_http"
 	. "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
@@ -18,8 +20,18 @@ type ModuleServHttp struct {
 	log       ILogBuf
 }
 
-// NewModuleServHttp -- возвращает новый модуль HTTP-сервера
-func NewModuleServHttp() *ModuleServHttp {
+var (
+	mod   *ModuleServHttp
+	block sync.RWMutex
+)
+
+// GetModuleServHttp -- возвращает новый модуль HTTP-сервера
+func GetModuleServHttp() *ModuleServHttp {
+	block.Lock()
+	defer block.Unlock()
+	if mod != nil {
+		return mod
+	}
 	sf := &ModuleServHttp{
 		IKernelModule: kmodule.NewKernelModule("kServHttp"),
 		kServHttp:     kserv_http.GetKernelServHttp(),
@@ -30,6 +42,7 @@ func NewModuleServHttp() *ModuleServHttp {
 	_ = page_module.GetPageModule()
 
 	_ = http_api.NewHttpApi()
+	mod = sf
 	return sf
 }
 

+ 3 - 2
mds/mod_serv_http/mod_serv_http_test.go

@@ -48,7 +48,8 @@ func (sf *tester) newGood1() {
 	_ = mock_env.MakeEnv()
 	_ = os.Unsetenv("LOCAL_HTTP_URL")
 	os.Setenv("LOCAL_HTTP_URL", "http://localhost:18301/")
-	sf.mod = NewModuleServHttp()
+	sf.mod = GetModuleServHttp()
+	_ = GetModuleServHttp()
 	if sf.mod == nil {
 		sf.t.Fatalf("newGood1(): mod==nil")
 	}
@@ -69,5 +70,5 @@ func (sf *tester) newBad1() {
 			sf.t.Fatalf("newBad1(): panic==nil")
 		}
 	}()
-	_ = NewModuleServHttp()
+	_ = GetModuleServHttp()
 }