12345678910111213141516171819202122232425262728293031323334353637 |
- // 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}`;
- },
- };
|