♻️ 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 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 {
|
||||
ctx, cancel := context.WithCancelCause(baseCtx)
|
||||
|
||||
ret := func(e error) context.Context {
|
||||
cancel(e)
|
||||
return ctx
|
||||
}
|
||||
|
||||
current, err := getCurrentTemp()
|
||||
if err != nil {
|
||||
return ret(err)
|
||||
}
|
||||
|
||||
if current < MaxTemp {
|
||||
return ret(ErrChilledOut)
|
||||
}
|
||||
|
||||
go func() {
|
||||
var by []byte
|
||||
var err error
|
||||
current := MaxTemp + 1
|
||||
|
||||
for current >= MaxTemp {
|
||||
by, err = os.ReadFile(TempFile)
|
||||
if err != nil {
|
||||
cancel(err)
|
||||
return
|
||||
}
|
||||
|
||||
by = bytes.TrimSpace(by)
|
||||
current, err = strconv.Atoi(string(by))
|
||||
if err != nil {
|
||||
cancel(err)
|
||||
return
|
||||
}
|
||||
if current < MaxTemp {
|
||||
break
|
||||
}
|
||||
for current >= MaxTemp && err == nil {
|
||||
time.Sleep(Sleep)
|
||||
current, err = getCurrentTemp()
|
||||
}
|
||||
cancel(ErrChilledOut)
|
||||
if err == nil {
|
||||
err = ErrChilledOut
|
||||
}
|
||||
cancel(err)
|
||||
}()
|
||||
|
||||
return ctx
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue