package raft import ( "context" "fmt" "time" ) type Worker struct { ctx context.Context cancel context.CancelFunc cancelled bool // Variable pour suivre si cancel a été appelé } func (w *Worker) Start() { go func() { for { select { case <-w.ctx.Done(): fmt.Println("🛑 Worker arrêté !") return default: fmt.Println("🔄 Worker en cours...") time.Sleep(1 * time.Second) } } }() } func (w *Worker) Stop() { if !w.cancelled { w.cancel() // Annuler le contexte w.cancelled = true // Marquer comme annulé } else { fmt.Println("❗ Cancel déjà appelé, Worker déjà arrêté.") } } func (w *Worker) IsCancelled() bool { return w.cancelled }