Spaces:
Paused
Paused
| // To store message streaming controller | |
| export const ChatControllerPool = { | |
| controllers: {} as Record<string, AbortController>, | |
| addController( | |
| sessionId: string, | |
| messageId: string, | |
| controller: AbortController, | |
| ) { | |
| const key = this.key(sessionId, messageId); | |
| this.controllers[key] = controller; | |
| return key; | |
| }, | |
| stop(sessionId: string, messageId: string) { | |
| const key = this.key(sessionId, messageId); | |
| const controller = this.controllers[key]; | |
| controller?.abort(); | |
| }, | |
| stopAll() { | |
| Object.values(this.controllers).forEach((v) => v.abort()); | |
| }, | |
| hasPending() { | |
| return Object.values(this.controllers).length > 0; | |
| }, | |
| remove(sessionId: string, messageId: string) { | |
| const key = this.key(sessionId, messageId); | |
| delete this.controllers[key]; | |
| }, | |
| key(sessionId: string, messageIndex: string) { | |
| return `${sessionId},${messageIndex}`; | |
| }, | |
| }; | |