12345678910111213141516171819202122232425262728293031323334353637 |
- // To store message streaming controller
- export const ChatControllerPool = {
- controllers: {} as Record<string, AbortController>,
- addController(
- sessionIndex: number,
- messageId: number,
- controller: AbortController,
- ) {
- const key = this.key(sessionIndex, messageId);
- this.controllers[key] = controller;
- return key;
- },
- stop(sessionIndex: number, messageId: number) {
- const key = this.key(sessionIndex, 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(sessionIndex: number, messageId: number) {
- const key = this.key(sessionIndex, messageId);
- delete this.controllers[key];
- },
- key(sessionIndex: number, messageIndex: number) {
- return `${sessionIndex},${messageIndex}`;
- },
- };
|