123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package main
- import (
- "fmt"
- "time"
- "golang-fave/engine/basket"
- )
- func basket_clean_do(sb *basket.Basket, stop chan bool) {
- sb.Cleanup()
- }
- func basket_clean_start(sb *basket.Basket) (chan bool, chan bool) {
- ch := make(chan bool)
- stop := make(chan bool)
- go func() {
- for {
- select {
- case <-time.After(30 * time.Minute):
- // Cleanup every 30 minutes
- basket_clean_do(sb, stop)
- case <-ch:
- ch <- true
- return
- }
- }
- }()
- return ch, stop
- }
- func basket_clean_stop(ch, stop chan bool) {
- for {
- select {
- case stop <- true:
- case ch <- true:
- <-ch
- return
- case <-time.After(3 * time.Second):
- fmt.Println("Basket error: force exit by timeout after 3 seconds")
- return
- }
- }
- }
|