♻️ 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