@@ -5,7 +5,7 @@ import { WebViewRpcConfiguration } from './webview_rpc_configuration.js';
55 */
66export class ChunkAssembler {
77 constructor ( ) {
8- this . _chunkSets = new Map ( ) ;
8+ this . _chunkSetsByRequest = new Map ( ) ;
99 }
1010
1111 /**
@@ -22,39 +22,38 @@ export class ChunkAssembler {
2222 }
2323
2424 const chunkInfo = envelope . chunkInfo ;
25- const chunkSetId = chunkInfo . chunkSetId ;
25+ const requestId = envelope . requestId ;
2626
27- // Check if we've reached the maximum number of chunk sets
28- if ( ! this . _chunkSets . has ( chunkSetId ) &&
29- this . _chunkSets . size >= WebViewRpcConfiguration . maxConcurrentChunkSets ) {
30- // Remove the oldest chunk set
27+ // Check if we've reached the maximum number of concurrent requests
28+ if ( ! this . _chunkSetsByRequest . has ( requestId ) &&
29+ this . _chunkSetsByRequest . size >= WebViewRpcConfiguration . maxConcurrentChunkSets ) {
30+ // Remove the oldest request
3131 let oldestKey = null ;
3232 let oldestTime = Date . now ( ) ;
3333
34- for ( const [ key , value ] of this . _chunkSets ) {
34+ for ( const [ key , value ] of this . _chunkSetsByRequest ) {
3535 if ( value . lastActivity < oldestTime ) {
3636 oldestTime = value . lastActivity ;
3737 oldestKey = key ;
3838 }
3939 }
4040
4141 if ( oldestKey ) {
42- this . _chunkSets . delete ( oldestKey ) ;
43- console . warn ( `Maximum chunk sets reached (${ WebViewRpcConfiguration . maxConcurrentChunkSets } ). Removed oldest chunk set ${ oldestKey } ` ) ;
42+ this . _chunkSetsByRequest . delete ( oldestKey ) ;
43+ console . warn ( `Maximum concurrent requests reached (${ WebViewRpcConfiguration . maxConcurrentChunkSets } ). Removed oldest request ${ oldestKey } ` ) ;
4444 }
4545 }
4646
47- if ( ! this . _chunkSets . has ( chunkSetId ) ) {
48- this . _chunkSets . set ( chunkSetId , {
47+ if ( ! this . _chunkSetsByRequest . has ( requestId ) ) {
48+ this . _chunkSetsByRequest . set ( requestId , {
4949 chunks : new Map ( ) ,
5050 totalChunks : chunkInfo . totalChunks ,
5151 originalSize : chunkInfo . originalSize ,
52- lastActivity : Date . now ( ) ,
53- requestId : envelope . requestId
52+ lastActivity : Date . now ( )
5453 } ) ;
5554 }
5655
57- const chunkSet = this . _chunkSets . get ( chunkSetId ) ;
56+ const chunkSet = this . _chunkSetsByRequest . get ( requestId ) ;
5857
5958 // Add chunk
6059 const chunkIndex = Number ( chunkInfo . chunkIndex ) ;
@@ -70,7 +69,7 @@ export class ChunkAssembler {
7069 for ( let i = 1 ; i <= chunkSet . totalChunks ; i ++ ) {
7170 const chunk = chunkSet . chunks . get ( i ) ;
7271 if ( ! chunk ) {
73- console . error ( `Missing chunk ${ i } in set ${ chunkSetId } ` ) ;
72+ console . error ( `Missing chunk ${ i } for request ${ requestId } ` ) ;
7473 console . error ( `Available chunks:` , Array . from ( chunkSet . chunks . keys ( ) ) ) ;
7574 return { data : null , timedOutRequestIds } ;
7675 }
@@ -80,7 +79,7 @@ export class ChunkAssembler {
8079 }
8180
8281 // Clean up
83- this . _chunkSets . delete ( chunkSetId ) ;
82+ this . _chunkSetsByRequest . delete ( requestId ) ;
8483
8584 // Verify size
8685 if ( offset !== chunkSet . originalSize ) {
@@ -91,20 +90,20 @@ export class ChunkAssembler {
9190 return { data : result , timedOutRequestIds } ;
9291 }
9392
94- // Cleanup old chunk sets (older than configured timeout)
93+ // Cleanup old requests (older than configured timeout)
9594 const cutoff = Date . now ( ) - ( WebViewRpcConfiguration . chunkTimeoutSeconds * 1000 ) ;
9695 const toRemove = [ ] ;
9796
98- for ( const [ key , value ] of this . _chunkSets ) {
97+ for ( const [ key , value ] of this . _chunkSetsByRequest ) {
9998 if ( value . lastActivity < cutoff ) {
100- toRemove . push ( { key, requestId : value . requestId } ) ;
99+ toRemove . push ( key ) ;
101100 }
102101 }
103102
104- for ( const { key , requestId } of toRemove ) {
103+ for ( const requestId of toRemove ) {
105104 timedOutRequestIds . push ( requestId ) ;
106- this . _chunkSets . delete ( key ) ;
107- console . warn ( `Removed incomplete chunk set ${ key } for request ${ requestId } due to timeout` ) ;
105+ this . _chunkSetsByRequest . delete ( requestId ) ;
106+ console . warn ( `Removed incomplete chunks for request ${ requestId } due to timeout` ) ;
108107 }
109108
110109 return { data : null , timedOutRequestIds } ; // Not all chunks received yet
0 commit comments