♻️ Improve chill code
This commit is contained in:
parent
729e1d4dcc
commit
0272aa3b22
1 changed files with 31 additions and 21 deletions
|
|
@ -14,33 +14,43 @@ var MaxTemp int = 72500
|
||||||
var Sleep = time.Second * 10
|
var Sleep = time.Second * 10
|
||||||
var ErrChilledOut = errors.New("temperature dropped below threshold")
|
var ErrChilledOut = errors.New("temperature dropped below threshold")
|
||||||
|
|
||||||
|
func getCurrentTemp() (o int, err error) {
|
||||||
|
var by []byte
|
||||||
|
by, err = os.ReadFile(TempFile)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
by = bytes.TrimSpace(by)
|
||||||
|
o, err = strconv.Atoi(string(by))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func Chill(baseCtx context.Context) context.Context {
|
func Chill(baseCtx context.Context) context.Context {
|
||||||
ctx, cancel := context.WithCancelCause(baseCtx)
|
ctx, cancel := context.WithCancelCause(baseCtx)
|
||||||
|
|
||||||
go func() {
|
ret := func(e error) context.Context {
|
||||||
var by []byte
|
cancel(e)
|
||||||
var err error
|
return ctx
|
||||||
current := MaxTemp + 1
|
|
||||||
|
|
||||||
for current >= MaxTemp {
|
|
||||||
by, err = os.ReadFile(TempFile)
|
|
||||||
if err != nil {
|
|
||||||
cancel(err)
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
by = bytes.TrimSpace(by)
|
current, err := getCurrentTemp()
|
||||||
current, err = strconv.Atoi(string(by))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cancel(err)
|
return ret(err)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if current < MaxTemp {
|
if current < MaxTemp {
|
||||||
break
|
return ret(ErrChilledOut)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
for current >= MaxTemp && err == nil {
|
||||||
time.Sleep(Sleep)
|
time.Sleep(Sleep)
|
||||||
|
current, err = getCurrentTemp()
|
||||||
}
|
}
|
||||||
cancel(ErrChilledOut)
|
if err == nil {
|
||||||
|
err = ErrChilledOut
|
||||||
|
}
|
||||||
|
cancel(err)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
return ctx
|
return ctx
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue