♻️ Improve chill code

This commit is contained in:
Dan Jones 2024-11-06 11:05:41 -06:00
commit 0272aa3b22

View file

@ -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