Complete marks a task as completed and closes its result channel.
(sessionID string, taskID uint32)
| 200 | |
| 201 | // Complete marks a task as completed and closes its result channel. |
| 202 | func (tm *TaskManager) Complete(sessionID string, taskID uint32) { |
| 203 | task := tm.Get(sessionID, taskID) |
| 204 | if task == nil { |
| 205 | return |
| 206 | } |
| 207 | task.mu.Lock() |
| 208 | defer task.mu.Unlock() |
| 209 | |
| 210 | if task.State == TaskCompleted || task.State == TaskFailed { |
| 211 | return // already terminal |
| 212 | } |
| 213 | task.State = TaskCompleted |
| 214 | task.UpdatedAt = time.Now() |
| 215 | close(task.resultCh) |
| 216 | } |
| 217 | |
| 218 | // Fail marks a task as failed with a reason and closes its result channel. |
| 219 | func (tm *TaskManager) Fail(sessionID string, taskID uint32, reason string) { |