Browse Source

SVI Рабочее сохранение

SVI 2 months ago
parent
commit
4c44a6fe61

+ 5 - 4
v4/lev2/kmodule/mod_stat/mod_stat.go

@@ -12,6 +12,7 @@ import (
 	"time"
 
 	mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
 	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmodule/mod_stat/mod_stat_day"
@@ -59,21 +60,21 @@ func (sf *ModStat) eventMinute() {
 }
 
 // Add -- добавляет значение в статистику.
-func (sf *ModStat) Add(val int) {
+func (sf *ModStat) Add(val defs.Int) {
 	sf.statSec.Add(val)
 }
 
 // SvgSec -- возвращает посекундную SVG за последнюю минуту.
-func (sf *ModStat) SvgSec() string {
+func (sf *ModStat) SvgSec() defs.ITxtFix {
 	return sf.statSec.Svg()
 }
 
 // SvgMin -- возвращает поминутную SVG за последнюю минуту.
-func (sf *ModStat) SvgMin() string {
+func (sf *ModStat) SvgMin() defs.ITxtFix {
 	return sf.statMin.Svg()
 }
 
 // SvgDay -- возвращает SVG за последние сутки по часам.
-func (sf *ModStat) SvgDay() string {
+func (sf *ModStat) SvgDay() defs.ITxtFix {
 	return sf.statDay.Svg()
 }

+ 12 - 11
v4/lev2/kmodule/mod_stat/mod_stat_day/mod_stat_day.go

@@ -10,29 +10,30 @@ import (
 	"time"
 
 	svg "github.com/ajstarks/svgo"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 )
 
 // ModStatDay -- статистика модуля за первые 24 часа.
 type ModStatDay struct {
 	sync.RWMutex
-	lst    []int // Список значений за первые 24 часа
+	lst    []defs.Int // Список значений за первые 24 часа
 	bufSvg *bytes.Buffer
 }
 
 // NewModStatDay -- возвращает новую статистику модуля за первые 24 часа.
 func NewModStatDay() *ModStatDay {
 	sf := &ModStatDay{
-		lst:    []int{},
+		lst:    []defs.Int{},
 		bufSvg: bytes.NewBufferString(""),
 	}
 	return sf
 }
 
 // Sum -- возвращает сумму элементов по требованию.
-func (sf *ModStatDay) Sum() int {
+func (sf *ModStatDay) Sum() defs.Int {
 	sf.RLock()
 	defer sf.RUnlock()
-	sum := 0
+	sum := defs.Int(0)
 	for _, val := range sf.lst {
 		sum += val
 	}
@@ -40,7 +41,7 @@ func (sf *ModStatDay) Sum() int {
 }
 
 // Add -- добавляет значение в часовой срез.
-func (sf *ModStatDay) Add(val int) {
+func (sf *ModStatDay) Add(val defs.Int) {
 	sf.Lock()
 	defer sf.Unlock()
 
@@ -55,7 +56,7 @@ func (sf *ModStatDay) Add(val int) {
 }
 
 // Svg -- возвращает сгенерированный SVG по часовому срезу.
-func (sf *ModStatDay) Svg() string {
+func (sf *ModStatDay) Svg() defs.ITxtFix {
 	sf.RLock()
 	defer sf.RUnlock()
 	sf.bufSvg.Reset()
@@ -73,10 +74,10 @@ func (sf *ModStatDay) Svg() string {
 	sf.drawNet(valMin, valMax, cnv)
 	cnv.End()
 	strOut := sf.bufSvg.String()
-	return strOut
+	return defs.Txt(strOut)
 }
 
-func (sf *ModStatDay) drawNet(valMin, valMax int, cnv *svg.SVG) {
+func (sf *ModStatDay) drawNet(valMin, valMax defs.Int, cnv *svg.SVG) {
 	// Метки величины
 	if valMin == math.MaxInt64 || valMin == math.MinInt64 {
 		valMin = 0
@@ -126,10 +127,10 @@ func (sf *ModStatDay) drawNet(valMin, valMax int, cnv *svg.SVG) {
 }
 
 // Вычисляет максимальное и минимальное значение в графике.
-func (sf *ModStatDay) getMinNax() (int, int) {
+func (sf *ModStatDay) getMinNax() (defs.Int, defs.Int) {
 	var (
-		valMin = math.MaxInt64
-		valMax = math.MinInt64
+		valMin = defs.Int(math.MaxInt64)
+		valMax = defs.Int(math.MinInt64)
 	)
 	for _, val := range sf.lst {
 		if val < valMin {

+ 2 - 2
v4/lev2/kmodule/mod_stat/mod_stat_day/mod_stat_day_test.go

@@ -23,7 +23,7 @@ func (sf *tester) add() {
 	sf.stat.Add(12)
 	sf.stat.Add(11)
 	sf.stat.Add(3)
-	if svg := sf.stat.Svg(); svg == "" {
+	if svg := sf.stat.Svg(); svg.Get() == "" {
 		sf.t.Fatal("add(): svg is empty")
 	}
 	if sum := sf.stat.Sum(); sum == 0 {
@@ -38,7 +38,7 @@ func (sf *tester) new() {
 	if sf.stat == nil {
 		sf.t.Fatalf("new(): stat==nil")
 	}
-	if svg := sf.stat.Svg(); svg == "" {
+	if svg := sf.stat.Svg(); svg.Get() == "" {
 		sf.t.Fatal("new(): svg is empty")
 	}
 

+ 3 - 2
v4/lev2/kmodule/mod_stat/mod_stat_minute/mod_stat_minute.go

@@ -10,6 +10,7 @@ import (
 	"time"
 
 	svg "github.com/ajstarks/svgo"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 )
 
 // ModStatMinutes -- статистика модуля за первые 60 мин.
@@ -55,7 +56,7 @@ func (sf *ModStatMinutes) Add(val int) {
 }
 
 // Svg -- возвращает сгенерированный SVG по часовому срезу.
-func (sf *ModStatMinutes) Svg() string {
+func (sf *ModStatMinutes) Svg() defs.ITxtFix {
 	sf.RLock()
 	defer sf.RUnlock()
 	sf.bufSvg.Reset()
@@ -87,7 +88,7 @@ func (sf *ModStatMinutes) Svg() string {
 	sf.drawNet(valMin, valMax, cnv)
 	cnv.End()
 	strOut := sf.bufSvg.String()
-	return strOut
+	return defs.Txt(strOut)
 }
 
 func (sf *ModStatMinutes) drawNet(valMin, valMax int, cnv *svg.SVG) {

+ 2 - 2
v4/lev2/kmodule/mod_stat/mod_stat_minute/mod_stat_minute_test.go

@@ -23,7 +23,7 @@ func (sf *tester) add() {
 	sf.stat.Add(12)
 	sf.stat.Add(11)
 	sf.stat.Add(3)
-	if svg := sf.stat.Svg(); svg == "" {
+	if svg := sf.stat.Svg(); svg.Get() == "" {
 		sf.t.Fatal("add(): svg is empty")
 	}
 	if sum := sf.stat.Sum(); sum == 0 {
@@ -38,7 +38,7 @@ func (sf *tester) new() {
 	if sf.stat == nil {
 		sf.t.Fatalf("new(): stat==nil")
 	}
-	if svg := sf.stat.Svg(); svg == "" {
+	if svg := sf.stat.Svg(); svg.Get() == "" {
 		sf.t.Fatal("new(): svg is empty")
 	}
 

+ 11 - 10
v4/lev2/kmodule/mod_stat/mod_stat_sec/mod_stat_sec.go

@@ -10,12 +10,13 @@ import (
 	"time"
 
 	svg "github.com/ajstarks/svgo"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 )
 
 // ModStatSec -- статистика модуля за первые 60 сек.
 type ModStatSec struct {
 	sync.RWMutex
-	lst      []int // Список значений за последние 60 сек
+	lst      []defs.Int // Список значений за последние 60 сек
 	momentAt int64 // Метка времени для учёта текущей секунды
 	bufSvg   *bytes.Buffer
 }
@@ -23,7 +24,7 @@ type ModStatSec struct {
 // NewModStatSec -- возвращает новую статистику модуля за последние 60 сек.
 func NewModStatSec() *ModStatSec {
 	sf := &ModStatSec{
-		lst:      []int{},
+		lst:      []defs.Int{},
 		bufSvg:   bytes.NewBufferString(""),
 		momentAt: time.Now().Local().Unix(),
 	}
@@ -31,10 +32,10 @@ func NewModStatSec() *ModStatSec {
 }
 
 // Sum -- возвращает сумму элементов по требованию.
-func (sf *ModStatSec) Sum() int {
+func (sf *ModStatSec) Sum() defs.Int {
 	sf.RLock()
 	defer sf.RUnlock()
-	sum := 0
+	sum := defs.Int(0)
 	for _, val := range sf.lst {
 		sum += val
 	}
@@ -42,7 +43,7 @@ func (sf *ModStatSec) Sum() int {
 }
 
 // Add -- добавляет значение в минутный срез.
-func (sf *ModStatSec) Add(val int) {
+func (sf *ModStatSec) Add(val defs.Int) {
 	sf.Lock()
 	defer sf.Unlock()
 
@@ -72,7 +73,7 @@ func (sf *ModStatSec) Add(val int) {
 // )
 
 // Svg -- возвращает сгенерированный SVG по минутному срезу.
-func (sf *ModStatSec) Svg() string {
+func (sf *ModStatSec) Svg() defs.ITimeFix {
 	sf.Lock()
 	defer sf.Unlock()
 	sf.bufSvg.Reset()
@@ -84,8 +85,8 @@ func (sf *ModStatSec) Svg() string {
 	cnv.Text(20, 20, "Last 60 sec", "")
 	// cnv.Circle(250, 250, 125, "fill:none;stroke:black")
 	var (
-		valMin = math.MaxInt64
-		valMax = math.MinInt64
+		valMin = defs.Int(math.MaxInt64)
+		valMax = defs.Int(math.MinInt64)
 	)
 	fnGetMinMax := func() { // Вычисляет максимальное и минимальное значение в графике
 		for _, val := range sf.lst {
@@ -107,10 +108,10 @@ func (sf *ModStatSec) Svg() string {
 	cnv.End()
 	strOut := sf.bufSvg.String()
 	// strOut = strings.ReplaceAll(strOut, strCut, "")
-	return strOut
+	return defs.Txt(strOut)
 }
 
-func (sf *ModStatSec) drawNet(valMin, valMax int, cnv *svg.SVG) {
+func (sf *ModStatSec) drawNet(valMin, valMax defs.Int, cnv *svg.SVG) {
 	// Метки величины
 	if valMin == math.MaxInt64 {
 		valMin = 0

+ 2 - 2
v4/lev2/kmodule/mod_stat/mod_stat_sec/mod_stat_sec_test.go

@@ -35,7 +35,7 @@ func (sf *tester) add() {
 	sf.stat.momentAt = 0
 	sf.stat.Add(3)
 	sf.stat.Add(3)
-	if svg := sf.stat.Svg(); svg == "" {
+	if svg := sf.stat.Svg(); svg.Get() == "" {
 		sf.t.Fatal("add(): svg is empty")
 	}
 }
@@ -47,7 +47,7 @@ func (sf *tester) new() {
 	if sf.stat == nil {
 		sf.t.Fatalf("new(): stat==nil")
 	}
-	if svg := sf.stat.Svg(); svg == "" {
+	if svg := sf.stat.Svg(); svg.Get() == "" {
 		sf.t.Fatal("new(): svg is empty")
 	}
 }

+ 3 - 3
v4/lev2/kmodule/mod_stat/mod_stat_test.go

@@ -39,13 +39,13 @@ func (sf *tester) newGood1() {
 	// Обязательно установить время сразу, для покрытия тестами
 	sf.stat.timeMinute.Set(1)
 	sf.stat.Add(23)
-	if svg := sf.stat.SvgSec(); svg == "" {
+	if svg := sf.stat.SvgSec(); svg.Get() == "" {
 		sf.t.Fatalf("newGood1(): svg is empty")
 	}
-	if svg := sf.stat.SvgMin(); svg == "" {
+	if svg := sf.stat.SvgMin(); svg.Get() == "" {
 		sf.t.Fatalf("newGood1(): svg is empty")
 	}
-	if svg := sf.stat.SvgDay(); svg == "" {
+	if svg := sf.stat.SvgDay(); svg.Get() == "" {
 		sf.t.Fatalf("newGood1(): svg is empty")
 	}
 }

+ 6 - 6
v4/lev2/kserv_http/kserv_http.go

@@ -38,7 +38,7 @@ type kServHttp struct {
 	kCtx     kspec.IKernelCtx
 	lCtx     comp_spec.ILocalCtx
 	log      comp_spec.ILogBuf
-	strUrl   string // URL, на котором слушает HTTP-сервер
+	strUrl   defs.ITxtFix // URL, на котором слушает HTTP-сервер
 	fiberApp *fiber.App
 	isWork   mKs.ISafeBool
 	isEnd    mKs.ISafeBool
@@ -54,7 +54,7 @@ var (
 	hassert      = helpers.Hassert
 )
 
-func getParams() (string, comp_spec.ILogBuf, kspec.IKernelCtx) {
+func getParams() (defs.ITxtFix, comp_spec.ILogBuf, kspec.IKernelCtx) {
 	param := &log_buf.LogBufParam{
 		IsTerm_: mL1.NewSafeBool(true),
 		Prefix_: defs.Txt("kServHttp"),
@@ -64,7 +64,7 @@ func getParams() (string, comp_spec.ILogBuf, kspec.IKernelCtx) {
 	strLocalUrl := os.Getenv("LOCAL_HTTP_URL")
 	hassert(strLocalUrl != "", "getParams(): env LOCAL_HTTP_URL not set")
 	kCtx := kctx.GetKernelCtx()
-	return strLocalUrl, log, kCtx
+	return defs.Txt(strLocalUrl), log, kCtx
 }
 
 var msg1 = defs.Txt("GetKernelServHttp(): not have monolit name from kCtx")
@@ -146,7 +146,7 @@ func (sf *kServHttp) Run() {
 		return
 	}
 	sf.log.Debug(defs.Txt("Run(): url='%v'", sf.strUrl))
-	lstPort := strings.Split(sf.strUrl, ":")
+	lstPort := strings.Split(sf.strUrl.String(), ":")
 	strPort := lstPort[len(lstPort)-1]
 	strPort = strings.ReplaceAll(strPort, "/", "")
 	strPort = strings.ReplaceAll(strPort, `"`, "")
@@ -160,13 +160,13 @@ func (sf *kServHttp) Run() {
 	go sf.fnChErr(chErr)
 	fnCheckServer := func() error {
 		client := &http.Client{Timeout: 5 * time.Millisecond}
-		url := sf.strUrl + "monitor"
+		url := sf.strUrl.Get() + "monitor"
 		sf.log.Debug(defs.Txt("url=%v", url))
 		var (
 			resp *http.Response
 			err  error
 		)
-		if resp, err = client.Get(url); err == nil {
+		if resp, err = client.Get(string(url)); err == nil {
 			_ = resp.Body.Close()
 		}
 		return err

+ 3 - 3
v4/lev3/mod_serv_http/page_module/page_module.go

@@ -238,7 +238,7 @@ func (sf *PageModule) postSvgDay(ctx fiber.Ctx) error {
 	}
 	strSvgSec := module.Stat().SvgDay()
 	ctx.Set("Content-Type", "image/svg+xml")
-	return ctx.SendString(strSvgSec)
+	return ctx.SendString(strSvgSec.String())
 }
 
 // Возвращает секундную статистику модуля.
@@ -257,7 +257,7 @@ func (sf *PageModule) postSvgMin(ctx fiber.Ctx) error {
 	}
 	strSvgSec := module.Stat().SvgMin()
 	ctx.Set("Content-Type", "image/svg+xml")
-	return ctx.SendString(strSvgSec)
+	return ctx.SendString(strSvgSec.String())
 }
 
 // Возвращает секундную статистику модуля.
@@ -276,7 +276,7 @@ func (sf *PageModule) postSvgSec(ctx fiber.Ctx) error {
 	}
 	strSvgSec := module.Stat().SvgSec()
 	ctx.Set("Content-Type", "image/svg+xml")
-	return ctx.SendString(strSvgSec)
+	return ctx.SendString(strSvgSec.String())
 }
 
 // Возвращает модуль.

+ 6 - 4
v4/lev3/mod_spec/imod_stat.go

@@ -1,13 +1,15 @@
 package mod_spec
 
+import "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
+
 // IModuleStat -- статистика модуля.
 type IModuleStat interface {
 	// SvgSec -- возвращает SVG с посекундным графиком за последнюю минуту
-	SvgSec() string
+	SvgSec() defs.ITxtFix
 	// SvgMin -- возвращает SVG с поминутным графиком за последний час
-	SvgMin() string
+	SvgMin() defs.ITxtFix
 	// SvgDay -- возвращает SVG с поминутным графиком за последние сутки
-	SvgDay() string
+	SvgDay() defs.ITxtFix
 	// Add -- добавляет секундное показание в статистику
-	Add(int)
+	Add(defs.Int)
 }