package middleware import ( "sync" "github.com/google/uuid" ) // ProgressManager 用于管理所有请求的进度 type ProgressManager struct { progressMap map[string]chan string mu sync.RWMutex } func NewProgressManager() *ProgressManager { return &ProgressManager{ progressMap: make(map[string]chan string), } } func (pm *ProgressManager) CreateProgress() string { pm.mu.Lock() defer pm.mu.Unlock() // 生成一个唯一的请求 ID id := uuid.New().String() // 创建一个新的 progress channel pm.progressMap[id] = make(chan string) return id } func (pm *ProgressManager) GetProgressChan(id string) (chan string, bool) { pm.mu.RLock() defer pm.mu.RUnlock() progressChan, ok := pm.progressMap[id] return progressChan, ok } func (pm *ProgressManager) CloseProgress(id string) { pm.mu.Lock() defer pm.mu.Unlock() if progressChan, ok := pm.progressMap[id]; ok { close(progressChan) delete(pm.progressMap, id) } }