66 lines
1.2 KiB
Go
66 lines
1.2 KiB
Go
// Copyright (C) 2021 Marius Schellenberger
|
|
|
|
package server
|
|
|
|
import (
|
|
"errors"
|
|
"git.giftfish.de/ston1th/gowiki/pkg/core"
|
|
bleve "git.giftfish.de/ston1th/gowiki/pkg/index"
|
|
"runtime"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
day = time.Hour * 24
|
|
min = time.Second * 30
|
|
max = day * 90
|
|
|
|
div = 1048576
|
|
)
|
|
|
|
func duration(duration, mode string) (d time.Duration, err error) {
|
|
switch mode {
|
|
case "1":
|
|
d, err = time.ParseDuration(duration)
|
|
if err != nil {
|
|
err = errors.New("could not parse duration")
|
|
return
|
|
}
|
|
case "2":
|
|
var t int
|
|
t, err = strconv.Atoi(duration)
|
|
if err != nil {
|
|
err = errors.New("could not parse duration")
|
|
return
|
|
}
|
|
d = time.Duration(int(day) * t)
|
|
default:
|
|
err = errors.New("invalid mode")
|
|
return
|
|
}
|
|
|
|
if d < min {
|
|
err = errors.New("minimum duration is 30 seconds")
|
|
}
|
|
if d > max {
|
|
err = errors.New("maximum duration is 90 days")
|
|
}
|
|
return
|
|
}
|
|
|
|
func fmtMem(i uint64) string {
|
|
return strconv.FormatFloat(float64(i)/div, 'f', 2, 64)
|
|
}
|
|
|
|
func getStats(i *bleve.Index) *core.Stats {
|
|
mem := new(runtime.MemStats)
|
|
runtime.ReadMemStats(mem)
|
|
return &core.Stats{
|
|
Goroutines: runtime.NumGoroutine(),
|
|
Alloc: fmtMem(mem.Alloc),
|
|
Sys: fmtMem(mem.Sys),
|
|
Docs: i.DocCount(),
|
|
GoVersion: runtime.Version(),
|
|
}
|
|
}
|