You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			38 lines
		
	
	
		
			914 B
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			38 lines
		
	
	
		
			914 B
		
	
	
	
		
			TypeScript
		
	
| // 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}`;
 | |
|   },
 | |
| };
 |